前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习Pythonの笔记

学习Pythonの笔记

作者头像
Moemu
发布2023-05-04 13:21:46
2660
发布2023-05-04 13:21:46
举报
文章被收录于专栏:Moemu's NotepadMoemu's Notepad

获取目录

运行目录(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:\Users\28734\AppData\Local\Programs\Python\Python39\python.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=%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>

经格式化

代码语言: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=%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源码:

代码语言: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,'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中读取值

代码语言: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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取目录
    • 运行目录(cmd)
      • Py文件目录
        • EXE文件目录
        • 获取某文件的文件名并拆分
        • 拆分字符串
        • 当前时间获取
        • 计算时间差
        • 从XML提取信息
        • 多线程运行任务
        • 给图片插入句子
        • 打开指定网站
        • 注册表
        • 随机从txt中读取值
        • 查找图片并扫描其二维码
        • 图片转码
        • 使用字典方法实现switch,改掉叠if杀人书的习惯
        • 进度条显示
        • 解压zip压缩包
        • 遍历文件夹中的所有文件并重命名
        • requirements.txt
          • 生成
            • 使用
            • 管理员权限获取
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档