python 3.x shutil.copy FileNotFoundError

时间:2016-05-19 20:31:46

标签: python python-3.4 shutil

系统Windows 8.1 Python 3.4
重复获取FileNotFound Errno2,尝试复制目录中的所有文件。

import os
import shutil
source = os.listdir("C:\\Users\\Chess\\events\\")
for file in source :
    shutil.copy(file, "E:\\events\\")

产量

FileNotFoundError : [Errno2] No such file or directory 'aerofl03.pgn'.

虽然'aerofl03.pgn'是源列表['aerofl03.pgn', ...]中的第一个。 如果添加了一行,结果相同:

for file in source :
    if file.endswith('.pgn') :
        shutil.copy(file, "E:\\events\\")

如果编码

,结果相同
for file in "C:\\Users\\Chess\\events\\" :

我的shutil.copy(sourcefile,destinationfile)可以很好地复制单个文件。

1 个答案:

答案 0 :(得分:2)

os.listdir()仅列出 没有路径的文件名。如果没有完整路径,shutil.copy()会将文件视为相对于当前工作目录的文件,并且当前工作目录中没有aerofl03.pgn文件。

再次添加路径以获取完整路径名:

path = "C:\\Users\\Chess\\events\\"
source = os.listdir(path)

for filename in source:
    fullpath = os.path.join(path, filename)
    shutil.copy(fullpath, "E:\\events\\")

现在告诉shutil.copy()复制C:\Users\Chess\events\aerofl03.pgn,而不是<CWD>\aerofl03.pgn