将数千个文件(按名称筛选)复制到指定的文件夹

时间:2017-02-20 15:49:29

标签: python copy

我正在尝试执行两项操作:

  1. 从包含一些ID(导致文件名)的.txt文件开始,检查该文件是否在文件夹中;
  2. 如果步骤1)为真,则将文件从该文件夹复制到指定的文件夹。
  3. .txt文件存储以下代码:

    111081
    112054
    112051
    112064
    

    这就是我的尝试:

    from glob import glob
    from shutil import copyfile
    import os
    
    input = 'C:/Users/xxxx/ids.txt'
    input_folder = 'C:/Users/xxxx/input/'
    dest_folder = 'C:/Users/xxxx/output/'
    with open(input) as f:
       for line in f:
           string = "fixed_prefix_" + str(line.strip()) + '.asc'
           if os.path.isfile(string):
                copyfile(string, dest_folder)
    

    string变量生成此(例如):

    print string
    fixed_prefix_111081.asc
    

    然后,我确定搜索和将文件复制到目标文件夹时还有其他问题。主要问题是我不知道如何在fixed_prefix_111081.asc中搜索input_folder文件。

1 个答案:

答案 0 :(得分:2)

  • copyfile期望文件名为目的地。传递现有目录的情况是它不起作用。使用copy处理两种情况(目标目录或目标文件)
  • 输入文件似乎是在没有路径的情况下传递 。如果您不在input_folderos.path.isfileFalse
  • ,则必须生成完整的文件名

我的修正提案:

with open(input) as f:
   for line in f:
       string = "fixed_prefix_{}.asc".format(line.strip())
       fp_string = os.path.join(input_folder,string)
       if os.path.isfile(fp_string):
            copy(fp_string, dest_folder)