获取目录
运行目录(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&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></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杀人书的习惯
代码语言:javascript复制From:Python那些优雅的写法:switch-case - 简书 (jianshu.com)
# 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)