学习Pythonの笔记

2023-05-04 13:21:46 浏览数 (1)

获取目录

运行目录(cmd)

代码语言:javascript复制
import os
cmd=os.getcwd()

Py文件目录

代码语言:javascript复制
import os
py=os.path.dirname(os.path.abspath(__file__))

EXE文件目录

代码语言:javascript复制
import sys
print(sys.executable)

运行结果(.py)

代码语言:javascript复制
C:Users28734AppDataLocalProgramsPythonPython39python.exe

故在非EXE中调试时,获取的是Python.exe所在位置

获取某文件的文件名并拆分

代码语言:javascript复制
import os
file='E:...xxx.jpg' #文件目录
#获取文件名
filedir=os.path.split(file) #filedir: ['E:...xxx.jpg','xxx.jpg']
filename=filedir[1] #filename: xxx.jpg
#拆分文件名
file=filename.split('.') #以“.”号分割字符串 file: ['xxx','jpg']
name=file[0] #name: xxx
houzui=file[1] #houzui: jpg

拆分字符串

代码语言:javascript复制
a='123456.6543321.000000'
a1=a.split('.') #a1: 123456

当前时间获取

代码语言:javascript复制
import datetime
time = datetime.datetime.now() #获取当前时间(2021-08-15 23:50:40.236077)
realtime = time.strftime("%Y-%m-%d") #格式化获取到的时间(2021-08-15)

计算时间差

代码语言:javascript复制
from dateutil import parser
d1 = '2021-01-01'
d2 = '2021-02-01'
days = str((parser.parse(d2) - parser.parse(d1)).days)

从XML提取信息

temp.xml:

未经格式化:

代码语言:javascript复制
<?xml version="1.0" encoding="utf-8" ?><images><image><startdate>20210813</startdate><fullstartdate>202108130900</fullstartdate><enddate>20210814</enddate><url>/th?id=OHR.UbehebeCrater_ZH-CN0157876978_1920x1080.jpg&amp;rf=LaDigue_1920x1080.jpg&amp;pid=hp</url><urlBase>/th?id=OHR.UbehebeCrater_ZH-CN0157876978</urlBase><copyright>死亡谷国家公园里的优比喜比火山口,加利福尼亚州 (© Albert Knapp/Alamy)</copyright><copyrightlink>https://www.bing.com/search?q=死亡谷国家公园&amp;form=hpcapt&amp;mkt=zh-cn</copyrightlink><headline></headline><drk>1</drk><top>1</top><bot>1</bot><hotspots></hotspots></image><tooltips><loadMessage><message>正在加载...</message></loadMessage><previousImage><text>上一个图像</text></previousImage><nextImage><text>下一个图像</text></nextImage><play><text>播放视频</text></play><pause><text>暂停视频</text></pause></tooltips></images>

经格式化

代码语言:javascript复制
<images>
	<image>
		<startdate>20210813</startdate>
		<fullstartdate>202108130900</fullstartdate>
		<enddate>20210814</enddate>
		<url>/th?id=OHR.UbehebeCrater_ZH-CN0157876978_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp</url>
		<urlBase>/th?id=OHR.UbehebeCrater_ZH-CN0157876978</urlBase>
		<copyright>死亡谷国家公园里的优比喜比火山口,加利福尼亚州 (© Albert Knapp/Alamy)</copyright>
		<copyrightlink>https://www.bing.com/search?q=死亡谷国家公园&form=hpcapt&mkt=zh-cn</copyrightlink>
		<headline/>
		<drk>1</drk>
		<top>1</top>
		<bot>1</bot>
		<hotspots/>
	</image>
<tooltips>
	<loadMessage>
		<message>正在加载...</message>
	</loadMessage>
	<previousImage>
		<text>上一个图像</text>
	</previousImage>
	<nextImage>
		<text>下一个图像</text>
	</nextImage>
	<play>
		<text>播放视频</text>
	</play>
	<pause>
		<text>暂停视频</text>
	</pause>
	</tooltips>
</images>

Python源码:

代码语言:javascript复制
from xml.dom import minidom
dom=minidom.parse("temp.xml") #加载和读取XML文件
root=dom.documentElement #获取XML文档对象
msg = root.getElementsByTagName('copyright') #数据所在节点名
information1 = msg[0].firstChild.data #获取文本名
print('拍摄地(作者):',information1)

多线程运行任务

代码语言:javascript复制
from threading import Thread  
t1 = Thread(target=first) #指定t1线程的任务——运行first函数
t2 = Thread(target=sec) #指定t2线程的任务——运行sec函数
#多线程开始
t1.start()
t2.start()

给图片插入句子

代码语言:javascript复制
import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np	
bk_img= cv2.imread("first.jpg") #读取first.jpg
word = 'Hello world' #此处写你的句子
fontpath= "HarmonyOS_Sans_SC_Black.ttf" #设置字体
font= ImageFont.truetype(fontpath,32) #设置字体长度
img_pil= Image.fromarray(bk_img) #转换数据
draw= ImageDraw.Draw(img_pil) #简化模块长度
draw.text((70,230), word, font= font, fill= (0,0,0))
#绘制文字信息,(70,230)为字体的位置,(0,0,0)为颜色RGB码
bk_img= np.array(img_pil) #转换数组
cv2.imshow("finally",bk_img) #展示图片
cv2.waitKey() #展示图片时按任意键继续
cv2.imwrite("finally.jpg",bk_img)#写入图片

打开指定网站

代码语言:javascript复制
import webbrowser
url = 'https://muspace.top'
webbrowser.open_new(url)

注册表

代码语言:javascript复制
import win32api
import win32con
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters',0, win32con.KEY_ALL_ACCESS)
#定位:key = win32api.RegOpenKey(win32.com.[第一级目录],'注册表位置',0,win32con.KEY_ALL_ACCESS)
win32api.RegCreateKey(key,'{2227A280-3AEA-1069-A2DE-08002B30309D}')
#新建项:win32api.RegCreateKey(key,'[项名]')
win32api.RegSetValueEx(key,'EnablePrefetcher',0,win32con.REG_SZ,'00000001')
#写注册表:win32api.RegSetValueEx(key,'[值名]',0,win32con.[值类型],('[值]'))

随机从txt中读取值

代码语言:javascript复制
def txt():
    import random
    with open('sen.txt', 'r' , encoding='utf8') as f: #打开sen.txt
        datas = f.readlines() #按换行符获取值
        data  =  random.choice(datas) #随机选择数据
    if data.strip() == '': #当获取到的数据为空时
        txt() #重新执行函数
    else:
        return data.strip() #反之,返回值

查找图片并扫描其二维码

代码语言:javascript复制
import numpy as np
from PIL import Image
from pyzbar import pyzbar
import glob
import os
import sys

PATH_TO_TEST_IMAGES_DIR = os.path.dirname(os.path.abspath(__file__)) #获取Py文件所在路径
img=PATH_TO_TEST_IMAGES_DIR   "/*.[jp][pn]g"

for pidImage in glob.glob(img): #查找jpg和png文件
    print('要解析二维码的图片: ',pidImage)
    im = np.array(Image.open(pidImage)) # 读取文件,转成数组
try:
    print(pyzbar.decode(im)[0].data.decode("utf-8")) # 输出内容
    os.remove(pidImage) #扫过移除二维码
    print('识别完毕,自动移除二维码')
except:
    print('无法识别二维码,请检查你的图片是否正确或确认程序根目录中含有图片')

图片转码

代码语言:javascript复制
from PIL import Image 
pidImage='xxx.jpg'
im = Image.open(pidImage).convert('RGB') # 打开图片
im.save(newfilename,'webp') #以webp方式保存图片

使用字典方法实现switch,改掉叠if杀人书的习惯

From:Python那些优雅的写法:switch-case - 简书 (jianshu.com)

代码语言:javascript复制
# switch = {"valueA":functionA,"valueB":functionB,"valueC":functionC}
# try:
#  switch["value"]() #执行相应的方法。
# except KeyError as e:
#       pass 或 functionX #执行default部分

switch = {
    "a":lambda:x:x*2,
    "b":lambda:x:x*3,
    "c":lambda:x:x**x
}
try:
    swtich["c"](6)
except KeyError as e:
    pass

进度条显示

代码语言:javascript复制
from tqdm import tqdm
for i in tqdm(range(100000)):
	#print('hello world')

解压zip压缩包

代码语言:javascript复制
import zipfile
with zipfile.ZipFile(zipname) as zf:
                zf.extractall()

遍历文件夹中的所有文件并重命名

代码语言:javascript复制
for file in os.listdir(imgdir):
	newname=file '.jpg'
	new_name=file.replace(file,newname)
	#重命名
    os.renames(os.path.join(imgdir,file),os.path.join(imgdir,new_name))

requirements.txt

用于指示程序所用第三方库

生成

代码语言:javascript复制
# 安装
pip install pipreqs
# 在当前目录生成
pipreqs . --encoding=utf8 --force

使用

代码语言:javascript复制
pip install -r requirements.txt

管理员权限获取

注意: 无法在Debug中调试该项,请直接通过文件运行

代码语言:javascript复制
if ctypes.windll.shell32.IsUserAnAdmin():
	# main()
else:
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

0 人点赞