获取目录

运行目录(cmd)

1
2
import os
cmd=os.getcwd()

Py文件目录

1
2
import os
py=os.path.dirname(os.path.abspath(__file__))

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

1
2
3
4
5
6
7
8
9
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

拆分字符串

1
2
a='123456.6543321.000000'
a1=a.split('.') #a1: 123456

当前时间获取

1
2
3
import datetime
time = datetime.datetime.now() #获取当前时间(2021-08-15 23:50:40.236077)
realtime = time.strftime("%Y-%m-%d") #格式化获取到的时间(2021-08-15)

计算时间差

1
2
3
4
from dateutil import parser
d1 = '2021-01-01'
d2 = '2021-02-01'
days = str((parser.parse(d2) - parser.parse(d1)).days)

从XML提取信息

temp.xml:

未经格式化:

1
<?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=%E6%AD%BB%E4%BA%A1%E8%B0%B7%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&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>

经格式化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<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=%E6%AD%BB%E4%BA%A1%E8%B0%B7%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&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源码:

1
2
3
4
5
6
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)

多线程运行任务

1
2
3
4
5
6
from threading import Thread  
t1 = Thread(target=first) #指定t1线程的任务——运行first函数
t2 = Thread(target=sec) #指定t2线程的任务——运行sec函数
#多线程开始
t1.start()
t2.start()

给图片插入句子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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)#写入图片

打开指定网站

1
2
3
import webbrowser
url = 'https://muspace.top'
webbrowser.open_new(url)

注册表

1
2
3
4
5
6
7
8
import win32api
import win32con
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters',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中读取值

1
2
3
4
5
6
7
8
9
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() #反之,返回值

查找图片并扫描其二维码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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('无法识别二维码,请检查你的图片是否正确或确认程序根目录中含有图片')

图片转码

1
2
3
4
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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

进度条显示

1
2
3
from tqdm import tqdm
for i in tqdm(range(100000)):
#print('hello world')

解压zip压缩包

1
2
3
import zipfile
with zipfile.ZipFile(zipname) as zf:
zf.extractall()

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

1
2
3
4
5
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))