Path

#获取当前工作目录
Path.cwd()     #代替os.getcwd()
#创建文件夹
#parents=True可以一直沿着路径创建多个新文件夹,exist_ok=True代表文件夹可以已经存在
Path("C:/a/b/c/").mkdir(parents=True, exist_ok=True)
#拼接路径
Path("a").joinpath("b").with_suffix(".csv") #得到"a/b.csv"
#遍历
Path("test").glob("*.txt")
Path("test").rglob("*.*")
#Windows家目录
Path.home() #代替os.environ["USERPROFILE"]
#读取写入
Path("aa.txt").write_text("content","utf-8")
content=Path("aa.txt").read_text("utf-8")

Stream

from io import StringIO

f = StringIO()  #创建StringIO对象--可以看做在内存中的文件
ff = StringIO('Hello!\nHi!\nGoodbye!') #这样初始化的时候就有值,但是好像有BUG
i=f.write('hello我是中国人\n') #写入字符串,自动移动读写指针
i=f.write('李明\n')#返回字符串个数,个人怀疑是指针位置
f.write('中国\n')
text=f.getvalue() #简单写法,读取全部字符串,指针不动

#移动读写指针 
ss=f.seek(0) 
"""参数:
为0时代表从文件开头开始算起
1代表从当前位置开始算起
2代表从文件末尾算起
如果操作成功,则返回新的指针位置,如果操作失败,则函数返回 -1"""

s=f.tell() #返回当前读写位置
s = f.readline() #从当前位置开始读取一行,包括\n;自动移动读写指针
 
s=f.readlines()  #读取所有行,返回一个字符串列表;;自动移动读写指针
f.flush() #刷新
s=f.read() # 读取全部内容;自动移动读写指针
s=f.read(5)  #从当前位置开始读取5个
f.truncate(3) #保留最前面的3个字符数,其它都删除
f.close() #关闭

流可以用于sys.stdout=StringIO()这种功能,这种写法主要用于日志(log)。但专业的日志记录可用自带库logging或第三方库loguru

class Person(object):
    def __init__(self, newName, newAge):
        self.name = newName
        self.age = newAge
    def eat(self):
        print(f"{self.name}正在吃")
    def __enter__(self):
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.die()
        
def rain():
    print("下雨了")
def run(self):
    print(f"{self.name}正在跑")

#动态添加类方法
p1 = Person("甲", 10)
#吃
p1.eat()
#下雨
p1.rain=rain
p1.rain()
#跑
#p1.run = run   不可行。到时候会报错:缺少参数
import types
p1.run=types.MethodType(run,p1)    #正确
p1.run()

枚举

enum库可以创建枚举类型

函数注释

def func(a,b):
    """
    :param a: 加数1
    :param b: 加数2
    :return: 情况1的返回值
    :return: 情况2的返回值
    """
    if a<b:
    	return a+b
    else:
    	retunr a-b

U盘

import psutil
def get_all_USBs():
    "返回disk_info的列表"
    return [
        di
        for di in psutil.disk_partitions()
        if "removable" in di.opts.split(",") or di.fstype in ("FAT32", "exFAT")
    ]
print("\n".join(i.mountpoint for i in get_all_USBs()))