一 . shutil 文件处理模块
1 import shutil 2 import os 3 4 5 fsrc = open("test", 'r') # 读取test 6 fdst = open("test2", "w") 7 shutil.copyfileobj(fsrc, fdst, length=1) # 拷贝文件对象到另一个文件 8 shutil.copyfile("./test", "tmp/aa") # 拷贝文件到指定目录
1 print(os.stat("test")) 2 shutil.copymode("test", "test2") # 拷贝文件权限 3 print(os.stat("test2"))
1 shutil.copystat("test", "test2") # 拷贝文件状态信息,包括atime,mtime 2 print(os.stat("test2")) 3 shutil.copy("test", "test3") # 仅拷贝文件和权限,状态信息不拷贝 4 print(os.stat("test3")) 5 shutil.copy2("test", "test4") # 拷贝文件和修改时间mtime 6 print(os.stat("test4")) 7 shutil.ignore_patterns("*est*") # 忽略文件模式 8 shutil.copytree(".", "tmp", symlinks=False, ignore=shutil.ignore_patterns("*est*", "tmp*")) # 忽略包含est和tmp开头的文件
1 shutil.rmtree(path="tmp", ignore_errors=False, onerror=None) # 递归删除tmp目录,不忽略错误 2 3 shutil.move("test2", "test5") # 把test2 移动到test5.相当于重命名 4 shutil.make_archive("new_test", format="gztar", root_dir="./tmp/")
1 import zipfile 2 # 压缩 3 new_zip = zipfile.ZipFile('new_test.zip', 'w') # 创建一个归档文件,创建时,模式为'w' 4 new_zip.write('test3') # 把test3文件压缩进去 5 new_zip.write('test4') # 把test4压缩进去 6 new_zip.setpassword(b'123') # 设置压缩密码,测试无效果 7 new_zip.close() # 写入关闭 8 # 解压 9 new_zip_decompress = zipfile.ZipFile("new_test.zip", 'r') # 打开压缩包,模式 'r' 10 print(new_zip_decompress.filelist) # 查看压缩包内文件 11 new_zip_decompress.extractall() # 解压压缩包 12 new_zip_decompress.close()
1 import tarfile 2 new_tar = tarfile.open('test.tar', 'w') # 在当前目录新建一个tar压缩文件 3 new_tar.add('test3', arcname='test3') # 指定压缩文件路径,指定压缩后的名字 4 new_tar.add("test4", arcname="test4") 5 new_tar.close() # 压缩完毕 6 7 extra_tar = tarfile.open("test.tar", 'r') 8 extra_tar.extractall() # 解压所有 9 extra_tar.close()
二 . shelve 可持久化数据
1 import shelve 2 3 new_shelve = shelve.open("shelve_file") # 打开一个可持久化文件 4 5 d1 = {"k1": "v1", "k2":"v2"} # 定义要存储的数据 6 l2 = ["1", '2', 3] 7 8 new_shelve["d1"] = d1 # 存取一个数据到shelve文件,定义格式为key,value形式 9 new_shelve["l2"] = l2 10 new_shelve.close() #
1 print(new_shelve.keys()) 2 print(type(new_shelve.keys())) 3 print(new_shelve.values()) 4 new_shelve['l3'] = ["110", 112] 5 test_l1 = new_shelve.get('l2') 6 print('l2' in new_shelve.keys()) # 判断对象是否存在'l2'键 7 print(list(new_shelve.keys())) # 打印当前可持久化数据的键值 8 for k, v in new_shelve.items(): # 遍历数据 9 print(k, v) 10 print(test_l1) 11 test_l1.append(33) # 修改数据 12 print(test_l1) 13 new_shelve['l2'] = test_l1 # 改变可持续化里的数据 14 15 print(new_shelve['l2'])
三. xml
四. configparser
五. pickle & json
六. logging
七.hashlib
八.subprocess