我在一个目录中有350个文件夹,其中都包含两个名为“证书”和“建议”的csv文件。我想将每个“ certificates.csv”文件移动到一个新文件夹中,还要在此过程中更改这些.csv文件的名称,添加索引号作为后缀,这样它们就不会彼此覆盖,即“ certificates1”,“ certificate2“ ....” certificates350“等。
在尝试将所有文件移动到一个文件夹时,我设法做到了这一点:
import os
import shutil
src_dir = "C:/IN"
dst_dir = "C:/OUT"
for root, dirs, files in os.walk(src_dir):
for f in files:
if f.endswith('.csv'):
shutil.copy(os.path.join(root,f), dst_dir)
但是,所有操作都是在文件中相互覆盖,因为它们都具有相同的名称-“ certificates.csv”
答案 0 :(得分:0)
只需检查文件是否存在并增加计数器,直到文件名可用即可:
for root, dirs, files in os.walk(src_dir):
for f in files:
if f.endswith('.csv'):
index = 0
while True:
new_path = os.path.join(dst_dir, str(index) + f)
if os.path.isfile(new_path):
index += 1
continue
shutil.copy(os.path.join(root, f), new_path)
break
如果要使用后缀而不是文件的前缀,则应从扩展名中拆分名称,添加数字,然后再次加入。