在python中用os模块实现批量移动文件

本文介绍了应用python将一个详细实例的文档从一个文档文件夹(及其子文档文件夹)批量挪动到另一个文档文件夹。

python处置了片段目次及其文献后,就需要os包了。那一次,详细利用了以下办法

os.walk(), 那个法子可以遍历一个文献夹及其子文献(子子文献夹等)os.rename(),那个法子用于命名文献或者目录(因为是把持一个文献的相对路子,以是其实相等于关于文献停行剪切把持)

其别人能够帮忙shutil library停行挪动或从头创建文档。

以上是示例代码。

def run_main(source_dir, target_dir): num = 0 for root, dirs, files in os.walk(source_dir, topdown=False): # root 透露表示以后在造访的文献夹路子 # dirs 透露表示该文献夹下的子目录名list # files 透露表示该文献夹下的文献list for name in files: # print(os.path.join(root, name)) # print(type(os.path.join(root, name))) file = os.path.join(root, name) # 拼接文献的无缺路子(留意咱们关于一个文献或者文献夹把持,肯定要运用相对路子) print(file) if file.split(".")[-1] in ["xls", "xlsx", "csv"]: # 运用split判别获得的文献路子能否是以csv开头 # print(file) tar_file = file.split(".")[-2]+str(num)+"."+file.split(".")[-1] # 为了不有重名文献,给原文献名后加一个递增序号num构成新的文献名 # print(target_dir+tar_file.split("\\")[-1]) if os.path.isfile(target_dir + tar_file.split("\\")[-1]): # 判别目标文献夹能否已经保存该文献 print("曾经保留该文献") else: print("在挪动第{}个文献:{}".format(num+1, tar_file.split("\\")[-1])) os.rename(file, target_dir + tar_file.split("\\")[-1]) num += 1if __name__ == '__main__': run_main("D:/source/", "D:/target/")

若是你想重建文学,你也能够帮忙舒蒂尔。

将一个文档的精华复造到另一个文档中。

import shutilshutil.copyfileobj(open('old.xml','r'), open('new.xml','w'))shutil.copyfile(src, dst)

复造文档

shutil.copyfile('f1.log','f2.log')#目标文献无需生活shutil.copymode(src, dst)

仅复造权限。物量、群体、利用者不变。

shutil.copymode('f1.log','f2.log')#目标文献必须保留shutil.copystat(src, dst)

仅复造新闻,包罗:形式位、atime、mtime、标记

shutil.copystat('f1.log','f2.log')#目标文献必须保留shutil.copy(src, dst)

复造文档和权限

import shutil23shutil.copy('f1.log','f2.log')shutil.copy2(src, dst)

文件和形态学信息的副本

import shutil23shutil.copy2('f1.log','f2.log')shutil.ignore_patterns(*patterns) #底子用没有到shutil.copytree(src, dst, symlinks=False, ignore=None)

递归decopy文档文件夹

'''进修中碰着成就没人解答?小编创建了一个Python进修交换QQ群:857662006寻觅有情投意合的小同伴,互助合做,群里另有没有错的视频进修教程以及PDF电子书!'''import shutilshutil.copytree('folder1','folder2', ignore=shutil.ignore_patterns('*.pyc','tmp*'))#目标目录不能生计,留意关于folder2目录父级目录要有可写权限,ignore的意义是拂拭shutil.rmtree(path[, ignore_errors[, onerror]])

递归删除文献。

import shutilshutil.rmtree('folder1')shutil.move(src, dst)

递归挪动文献,类似于mv挨次,实的是改名。

import shutilshutil.move('folder1','folder3')shutil.make_archive(base_name, format,...)

创建压缩包,进入文学频道,如zip和tar。

Base_name:压缩包的文献名,也能够是压缩包的体例。若是只是一个文件名称,将保留到未来的内容,不然,将根据指定的体例保留。

例如:/tmp/data _ bak = >;To /tmp/

格局:紧凑型包拆品种,“zip”、“tar”、“bztar”和“gztar”

Root_dir:要收紧的文档文件夹途径(默认将来内容)

拥有者:用户,默许将来用户。

群体:群体,默许后来的群体。

Logger:用来记录日志,一般是日记。记录器东西。

#将 /data 下的文献打包摆设以后挨次目录import shutilret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')#将 /data下的文献打包摆设 /tmp/目录import shutilret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')

您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。