从CSV读取文件名,然后将文件复制到不同的目录

时间:2015-04-24 14:33:09

标签: python file csv batch-file mv

我已经能够编写批处理文件来查找文件并将文件路径放入CSV中。我还没有能够弄清楚如何从CSV读取文件位置,然后使用python将文件移动到具有相同文件夹结构的其他存储设备。这就是我想做的事。

我希望我有一些代码可以告诉你,但没有任何代码可以使用。

2 个答案:

答案 0 :(得分:0)

这是一个快速而肮脏的解决方案。 (我还没有测试过,YMMV!)

import csv
import os
import shutil
import sys


def main(argv):
  # TODO: this should do some error checking or maybe use optparse
  csv_file, existing_path_prefix, new_path_prefix = argv[1:]

  with open(csv_file, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
      # Assuming the column in the CSV file we want is the first one
      filename = row[0]

      if filename.startswith(existing_path_prefix):
        filename = filename[len(existing_path_prefix):]

      new_filename = os.path.join(new_path_prefix, filename)

      print ('Copying %s to %s...' % filename, new_filename),
      shutil.copy(filename, new_filename)
      print 'done.'
  print 'All done!'


if __name__ == '__main__':
  main(sys.argv)

答案 1 :(得分:0)

添加丹尼尔的帖子,因为他确实警告过他没有测试过它:),我认为你需要做一些小改动。基本上,我认为建议代码中的问题是假定filename是完整路径。但是,当您到达os.path.join的{​​{1}}命令时,这会产生问题,因为您正在添加一条到完整路径和名称的新路径。

我建议在csv中加入new_filenamefilepath来运行代码。虽然我没有作为函数运行(并且我使用Python语法的filename语句),但这些更改似乎在我测试它时有效:

print()
相关问题