从配置列表中复制python3 shutil错误

时间:2017-11-20 12:29:28

标签: python-3.x copy move shutil

我试图通过读取config.dat文件来使用shutil复制文件 这个文件很简单: /首页/管理/文件/文件1 /家/管理/文档/ file2的

代码确实有效,但它会复制file1,但是然后错过了file2,因为它看到了一个\ n,我猜测是因为新行。

#!/usr/bin/python3
import shutil
data = open("config.dat")
filelist = data.read()
src = filelist
dest = '/home/admin/Documents/backup/'
shutil.copy(src, dest)

错误代码即将获得:

Traceback (most recent call last):
  File "./testing.py", line 18, in <module>
    shutil.copy(src, dest)
  File "/usr/lib/python3.4/shutil.py", line 229, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.4/shutil.py", line 108, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 
'/home/admin/Documents/file1\n/home/admin/Documents/file2'

我希望根据config.dat文件夹中的文件运行这些文件的副本,但它会检测到'\n'。有办法解决这个问题吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

使用split('\n')获取文件列表和列表的迭代。你可能想要抛出file.strip()来摆脱尾随的空格和空行。

import shutil


dest = '/home/admin/Documents/backup/'
with open('config.dat') as data:
    filelist = data.read().split('\n')
    for file in filelist:
        if file:
            shutil.copy(file.strip(), dest)

或者,如果您在此之后不需要文件列表

with open('config.dat') as data:
    for file in data:
        if file:
            shutil.copy(file.strip(), dest)