Python把指定⽂件夹及其所有⼦⽂件夹下的⽂件汇总到⼀个⽂件夹下
python怎么读文件夹下的文件夹前⾔
有个需求,需要把指定⽂件夹下的所有Excel⽂件拷贝到⼀起,重名的⽂件需重命名,不能覆盖。
为实现需求,需⽤到os和shutil模块。
os.walk是⼀个简单易⽤的⽂件、⽬录遍历器,可以帮助我们⾼效的处理⽂件、⽬录⽅⾯的事情。
shutil 模块提供了⼀系列对⽂件和⽂件集合的⾼阶操作。 特别是提供了⼀些⽀持⽂件拷贝和删除的函数。
os.walk()介绍
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数
top 是所要遍历的⽂件夹的地址
topdown 可选,为True(默认为开启),则优先遍历top⽬录,否则优先遍历top的⼦⽬录。如果topdown参数为True,walk会遍历top ⽂件夹与top⽂件夹中每⼀个⼦⽬录。
onerror 可选,需要⼀个callable对象,当walk需要异常时,会调⽤。
followlinks 可选,如果为True,则会遍历⽬录下的快捷⽅式(linux 下是软连接 symbolic link )实际所指的⽬录(默认关闭),如果为False,则优先遍历 top 的⼦⽬录。
返回值
返回的是⼀个三元组(root,dirs,files)
root 是当前正在遍历的这个⽂件夹的地址
dirs 是⼀个 list ,内容是该⽂件夹中所有的「⼦⽂件夹」的名称(不包括⼦⽬录)
files 同样是 list , 内容是该⽂件夹中所有的「⽂件」的名称(不包括⼦⽬录)
功能
将⽂件 src 拷贝到⽂件或⽬录 dst。 src 和 dst 应为 路径类对象 或字符串。 如果 dst 指定了⼀个⽬录,⽂件将使⽤ src 中的基准⽂件名拷贝到 dst 中。 将返回新创建⽂件所对应的路径。
如果 follow_symlinks 为假值且 src 为符号链接,则 dst 也将被创建为符号链接。 如果 follow_symlinks 为真值且 src 为符号链接,dst 将成为 src 所指向的⽂件的⼀个副本。
copy() 会拷贝⽂件数据和⽂件的权限模式 (参见 os.chmod())。 其他元数据,例如⽂件的创建和修改时间不会被保留。
功能介绍
类似于 copy(),区别在于 copy2() 还会尝试保留⽂件的元数据。
当 follow_symlinks 为假值且 src 为符号链接时,copy2() 会尝试将来⾃ src 符号链接的所有元数据拷贝到新创建的 dst 符号链接。
但是,此功能不是在所有平台上均可⽤。 在此功能部分或全部不可⽤的平台上,copy2() 将尽量保留所有元数据;copy2() ⼀定不会由于⽆法保留⽂件元数据⽽引发异常。
copy2() 会使⽤ copystat() 来拷贝⽂件元数据。
copy2()执⾏结果⽰例
需求实现
origin_path ='/Users/ash/project/a'
target_path ='/Users/ash/project/b'
for o_dir, sub_f, files in os.walk(origin_path):
# print('o_dir: ', o_dir) # 当前⽂件夹「路径」的字符串
# print('sub_f: ', sub_f) # 当前⽂件夹的「⼦⽂件夹的列表」
# print('files: ', files) # 当前⽂件夹的「⽂件名称的列表」
for i in range(len(files)):
if files[i].endswith(('.xls','.xlsx','.csv')):
file_path = o_dir +'/'+ files[i]
temp_file_name = place(origin_path,'').replace('/','_') if len(temp_file_name)>1:
temp_file_name = temp_file_name[1:len(origin_path)]+'_'            new_path = target_path +'/'+ temp_file_name + files[i]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。