一、说明
python中主要通过os模块和shutil模块两个模块对文件进行相关操作,移动、复制、删除、重命名。比较大的文件通过命令操作可以节省时间,提高效率。
二、实例对文件夹中文件的拷贝
from multiprocessing import Pool,Manager
import os
#完成拷贝文件
def copyFile(filename,oldname,newname,que):
"拷贝文件函数"
# 三部操作 读取内容,写入内容 关闭
que.put(filename)
br = open(oldname+'/'+filename,'rb')
bw = open(newname+'/'+filename,'wb')
content = br.read()
bw.write(content)
#关闭源文件和目标文件
br.close()
bw.close()
def fun():
#1、提示输入要拷贝的文件名字
oldname = input("请输入你要拷贝的文件夹名字或者路径:")
#2.创建文件夹,存放拷贝内容
newname = oldname + '拷贝内容'
os.mkdir(newname)
#3.获取oldname中的目录和文件名字
filenames = os.listdir(oldname)
print(filenames)
# #4.过滤文件
# filename = solute(filenames)
#利用多进程的方式拷贝数据
po = Pool(5) #进程数量
que = Manager().Queue()
for fileName in filenames:
po.apply_async(copyFile,args=(fileName,oldname,newname,que))
con = 0
allcon = len(filenames)
while True:#用主进程来显示拷贝进度
dd = que.get()
con +=1
print('拷贝进度:%.2f%%'%((con/allcon)*100),end='')
if con==allcon:
print("恭喜你拷贝完成")
break
if __name__=='__main__':
fun()
三、文件、文件夹的移动、复制、删除、重命名函数
-
导入shutil模块和os模块
import shutil,os -
复制单个文件
shutil.copy("C:\a\1.txt","C:\b") -
复制并重命名新文件
shutil.copy("C:\a\2.txt","C:\b\121.txt") -
复制整个目录(备份) shutil.copytree("C:a","C: ew_a")
-
删除文件
os.unlink("C:\b\1.txt") os.unlink("C:\b\121.txt") -
删除空文件夹
try: os.rmdir("C:\b\new_a") except Exception as ex: print("错误信息:"+str(ex))#提示:错误信息,目录不是空的 -
删除文件夹及内容
shutil.rmtree("C:\b\new_a") -
移动文件
shutil.move("C:\a\1.txt","C:\b") -
移动文件夹
shutil.move("C:\a\c","C:\b") -
重命名文件
shutil.move("C:\a\2.txt","C:\a\new2.txt") -
重命名文件夹
shutil.move("C:\a\d","C:\a\new_d")