从CSV文件导出文件名列表,并使用python复制到另一个目录

时间:2016-09-18 11:12:00

标签: python csv

我有一个包含文件列表的csv文件: 诺姆 沙漠 绣球 海蜇 考拉 灯塔 企鹅 郁金香 我想用python创建一个脚本,将这个文件列表从一个目录复制到另一个目录,我可以这样做:

import csv
import os
import shutil
source = os.listdir("C:\Test")
destination = "C:\Test1"
with open('semplice1.csv') as csvfile:
       reader = csv.DictReader(csvfile)
       for row in reader:
           print(row['nome'])

在这个wway我可以打印文件的名称。 你能帮我完成复制列表文件的代码吗? 感谢。enter code here

2 个答案:

答案 0 :(得分:0)

问题是os.listdir()会返回您提供的目录中包含的文件的列表 - 在本例中为“C:\ test”。

稍后,当您尝试将source与单个文件连接时,您就可以尝试将列表与str组合在一起。这就是您获得TypeError

的原因

如果所有文件都直接包含在“C:\ test”中,那么您可以删除os.listdir()并执行:

import csv
import os
import shutil

source = "C:\Test"
destination = "C:\Test1"

with open('semplice1.csv') as csvfile:
       reader = csv.DictReader(csvfile)
       for row in reader:
           print(row['nome'])
           a = row['nome']
           shutil.copyfile(os.path.join(source, a), destination)

请注意,使用os.path.join()也可以作为构建文件路径的更好解决方案。

答案 1 :(得分:0)

我用这段代码解决了我的问题:

import csv
import os
import shutil

source = "C:\Test"
destination = "C:\Test1"

with open('semplice1.csv') as csvfile:
       reader = csv.DictReader(csvfile)
       for row in reader:
           print(row['nome'])
           shutil.copyfile(os.path.join(source, row['nome']), os.path.join(destination, row['nome']))