Python目录操作是办公自动化的利器。
将一个文件夹内容拷贝到另一个文件夹下,其实用不到Python,直接ctrl C, ctrl V就完了。
当然,也可以用python来做,比如下面的例子,拷贝过去可以直接用。
import os
import shutil
def copyfile(srcpath, dstpath):
# 如果目标根目录不存在,则创建目标根目录。
if not os.path.exists(dstpath):
os.makedirs(dstpath)
# 遍历源文件夹,得到根目录,子目录和文件名列表
for root, dirs, files in os.walk(srcpath, topdown=True):
# 将目录中根目录部分换成目标目录
path = root.replace(srcpath, dstpath)
# 在目标目录中,建立与源目录一样的目录体系
for dir in dirs:
if not os.path.exists(os.path.join(path, dir)):
os.makedirs(os.path.join(path, dir))
#获取文件名依次遍历
for name in files:
# 拷贝文件。
shutil.copy(os.path.join(root, name), os.path.join(path, name))
srcpath = 'G:\\dir'
dstpath = 'G:\\dir4'
copyfile(srcpath, dstpath)
但是实际上,有一个非常实际的需求,可能是比较棘手的,就是你有一个文件夹,里面有很多文件,包括很多多级的子目录。查阅起来挺麻烦,你想知道这些子文件夹里到底有哪些文件,或者说,想把这些文件都拷贝出来放在一个目录下,也就是把这些文件都抽离出来,方便查看。那么下面的这个程序就很有用了。也可以拷贝过去直接用。
注释写的很清楚了。
import os
import shutil
# 将一个文件夹中的所有文件(包括子文件夹),拷贝到另一个文件夹中,去除子文件夹。
def copyfile_to_onedir(srcpath, dstpath):
# 遍历源文件夹,得到根目录,子目录和文件名列表
for root, dirs, files in os.walk(srcpath, topdown=True):
counter = 0
#获取文件名依次遍历
for name in files:
# 如果该文件在目标目录中已经存在,也就是重复文件,则给文件重命名,否则无法拷贝。
if os.path.exists(dstpath + '\\' + name):
counter += 1
# 获取文件名
filename = name[0: name.rindex('.')]
# 获取文件类型(后缀)
filetype = name[name.rindex('.') + 1: ]
# 将文件名重命名后,拷贝到目标文件夹,注意,copy的两个参数都要是绝对路径的完整文件名
shutil.copy(os.path.join(root, name), dstpath + '\\' + filename + str(counter) + '.' + filetype)
else:
# 如果该文件未重复,那就直接拷贝就好。
shutil.copy(os.path.join(root, name), dstpath + '\\' + name)
# copyfile_to_onedir('F:\\新建文件夹', "G:\\新建文件夹1")
希望对大家有所帮助