Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 复制文件时出错_Python_Copy_Shutil - Fatal编程技术网

Python 复制文件时出错

Python 复制文件时出错,python,copy,shutil,Python,Copy,Shutil,我正在尝试编写一个简短的Python脚本,它将从具有特定扩展名的目录中复制所有文件,并将它们放在不同的文件夹中。以下是脚本: import os, shutil source = "C:\\TCR_Calgary\\projects\\" destination = "C:\\TCR_Calgary\\reference\\my_code\\city_of_calgary_scripts\\" extension = ".py" for root, dirs, files in os.w

我正在尝试编写一个简短的Python脚本,它将从具有特定扩展名的目录中复制所有文件,并将它们放在不同的文件夹中。以下是脚本:

import os, shutil

source = "C:\\TCR_Calgary\\projects\\"

destination = "C:\\TCR_Calgary\\reference\\my_code\\city_of_calgary_scripts\\"

extension = ".py"

for root, dirs, files in os.walk(source):
    for file in files:
        if file.lower().endswith(extension):
            shutil.copy2(file, destination)
这是我得到的例外:

Traceback (most recent call last):
  File "C:/TCR_Calgary/reference/my_code/city_of_calgary_scripts/python_script_copier.py", line 13, in <module>
    shutil.copy2(file, destination)
  File "C:\Program Files (x86)\Python26\lib\shutil.py", line 99, in copy2
    copyfile(src, dst)
  File "C:\Program Files (x86)\Python26\lib\shutil.py", line 47, in copyfile
    raise Error, "`%s` and `%s` are the same file" % (src, dst)
shutil.Error: `AnnoMover.py` and `C:\TCR_Calgary\reference\my_code\city_of_calgary_scripts\AnnoMover.py` are the same file
回溯(最近一次呼叫最后一次):
文件“C:/TCR\u Calgary/reference/my\u code/city\u of\u Calgary\u scripts/python\u script\u copier.py”,第13行,在
copy2(文件,目标)
文件“C:\ProgramFiles(x86)\Python26\lib\shutil.py”,第99行,在copy2中
复制文件(src、dst)
文件“C:\Program Files(x86)\Python26\lib\shutil.py”,第47行,在copyfile中
引发错误,“'%s'和'%s'是同一个文件”%(src,dst)
错误:`AnnoMover.py`和`C:\TCR\u Calgary\reference\my\u code\city\u of\u Calgary\u scripts\AnnoMover.py`是同一个文件
我很困惑,因为AnnoMover.py不在目标文件夹中。在我看来,原始文件及其副本将是“相同的”,尽管它们的路径不会相同。很明显,有些事情我不明白。非常感谢您的帮助

版本:Python 2.6 对讲机:PyCharm社区版3.4
操作系统:Windows 7

异常消息可能会更清楚一些,但最后一行应该是
shutil.copy2(OS.path.join(源、文件、目标)
,这样源代码就完全合格了。

我让它工作起来:

import os, shutil

source = r"C:\TCR_Calgary\projects"

destination = r"C:\TCR_Calgary\reference\my_code\city_of_calgary_scripts"

extension = ".py"

for root, dirs, files in os.walk(source):
    for file in files:
        if file.lower().endswith(extension):
            file_path = os.path.realpath(os.path.join(root, file))
            shutil.copy2(file_path, destination)

谢谢这对我来说不太管用(因为要复制的文件位于源代码中的子文件夹中),但它确实为我指明了正确的方向。