一、模糊查找文件
import os
path = r"F:\Typora"
files = os.listdir(path)
for i in files:
# 查找文件中含有某个字符串的文件并确定文件类型(也就是后缀)
if 'Typora' in i and i.endswith('.exe'):
print(i)
二、文件自动归类
注意当使用的是绝对路径时,需要对文件和路径进行连接操作
p = os.path.join(path, file) # 连接目录
import os
import shutil
path = r"C:\Users\PC\Desktop\C\资料"
files = os.listdir(path)
for file in files:
p = os.path.join(path, file) # 连接目录
if os.path.isfile(p): # 判断是否为文件
folder_name = path + "\\" + file.split(".")[-1] # 获取后缀名作为文件名
# 如果不存在该文件后缀名的文件夹
if not os.path.exists(folder_name):
# 先创建文件夹
os.makedirs(folder_name)
shutil.move(p, folder_name)
else:
shutil.move(p, folder_name)
实现效果:
三、自动解压并删除压缩包
创建/删除 文件/文件夹 都要结合具体情况,注意路径,否则会报错
若解压后出现中文乱码问题→保姆级教学之解决Windows系统下shutil zipfile解压缩中文乱码问题_进击no猪排的技术博客_51CTO博客
import os
import shutil
path = r'./test'
# 1. 先判断是否为压缩文件
def isZip():
files = os.listdir(path)
for file in files:
if file.endswith(".zip"):
return file
# 2. 将目标文件解压到指定位置
def unZip(file):
# 先创建存储解压文件的文件夹(以原压缩包的名字为例)
folder_name = path + r'/' + file.split(".")[0]
os.makedirs(folder_name)
p = os.path.join(path, file)
shutil.unpack_archive(p, folder_name)
# 3. 删除压缩包
def deleteZip(file):
p = path + r'/' + file
os.remove(p)
while(True):
zip = isZip()
unZip(zip)
deleteZip(zip)
实现效果:
解压前 -->
解压后 -->
四、os模块常用操作
- os.getcwd( ) 查看当前路径
a = os.getcwd()
print(a)
- os.chdir( ) 切换到指定路径
path = "F:/"
os.chdir(path)
print(os.getcwd())
- os.listdir( ) 获取指定路径目录下的所有文件名(但不包括孙目录,只返回同级目录下的)
b = os.listdir(path=".")
print(b)
- os.path.isdir( ) 判断当前对象是否为目录
- os.path.isfile( ) 判断当前对象是否为文件
- os.path.join( ) 通常用于连接路径和文件名
os.path.join(root, item)
- os.path.exists( ) 判断当前文件/路径是否存在
path = "."
os.path.exists(path)
- os.makedirs( ) 创建多级目录
# 在当前目录下创建
os.makedirs(r"temp/qq/wx") # 或者是 os.makedirs(r"./temp/qq/wx")
# 在上一级目录下创建
os.makedirs(r"../temp/qq/wx")
mkidr()只能用于创建一级目录,例如:
创建目录
C:\Users\Administrator\Desktop\python_base\amo\qq1\wx1\amo1,
C:\Users\Administrator\Desktop\python_base\amo\qq1\wx1必须是存在的
- os.removedirs( ) 删除多级目录(整个目录都删除,且最后一级目录必须为空)
os.removedirs(r"./temp/qq/wx")
# rmdir() 删除空目录 (只删除路径最后的目录)
(使用 rmdir() 方法只能删除空的目录,
# 如果想要删除非空的目录,
则需要使用 Python 内置的标准模块 shutil 的 rmtree() 方法实现。)
- os.remove( ) 删除文件(使用方法同删除目录)
- os.rename( ) / renames( ) 重命名
os.rename("../temp666/test.py","../temp666/ans.py") # 也可以是目录
- os.walk( ) 遍历目录树
tuples = os.walk('./') # 遍历当前目录
for root, dirs, files in tuples: # 通过for循环打印遍历结果
print('文件目录:', root) # 打印文件目录
print('子目录:', dirs if dirs else '无') # 打印子目录
print('文件:', files if files else '无') # 打印文件
# 函数walk内有可选参数topdown,用于指定遍历的顺序。
# 如果值为True,表示自上而下遍历(即先遍历根目录);
# 如果值为 False,表示自下而上遍历(即先遍历最后一级子目录)。默认值为 True。
- os.path.split( ) 用于分割路径和文件名(如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在)
- os.path.splitext( ) 用于分割文件名和扩展名。二者都是以元组的形式返回
for file in os.listdir():
print(os.path.split(file))
filename = []
for file in os.listdir():
print(os.path.splitext(file))
filename.append(os.path.splitext(file)[0])
print(filename)
五、shutil模块常用操作
- shutil.copyfile( ) 拷贝文件
import shutil
with open("test1.txt","w", encoding="utf-8") as f1:
f1.write("chbjejhwebc")
# 参数1是被复制的源文件,参数2为复印件,且目标文件无需存在可以直接被创建
shutil.copyfile("test1.txt", "test1copy.txt")
# 还有copyfileobj(), copymode(), copytree()等,这里只简单介绍了一种
- shutil.movefile( ) 移动文件到指定路径
# 第一个参数为要移动的文件,第二参数为移动到指定路径
shutil.move("../demo2.txt", r"./shutil")
- shutil.unpack_archive( ) 解压文件
shutil.unpack_archive("压缩包", "解压到指定路径")
- shutil.make_archive( ) 压缩文件
shutil.make_archive("压缩到指定路径", "压缩格式如,zip、7", "待压缩的文件/文件夹")
标签:脚本,文件,Python,file,path,shutil,os,目录
From: https://blog.51cto.com/goku0623/8179615