从多个文件夹批量提取并重命名csv文件-Python

时间:2018-09-17 14:32:29

标签: python

我在一个目录中有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”

1 个答案:

答案 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

如果要使用后缀而不是文件的前缀,则应从扩展名中拆分名称,添加数字,然后再次加入。