Errno 2使用python shutil.py文件目的地

时间:2015-07-29 06:55:02

标签: python xml linux file shutil

我正在使用shutil python模块在linux redhat机器上复制文件和目录。

我编写了以下方法,它接受2个参数:src(正在收集的文件或目录的路径)和目标(所收集的日志/目录粘贴到的所需新路径)。 / p>

def copy(src, destination):
    if(os.path.exists(src)):
        if(os.path.isdir(src)):
            if(os.path.exists(destination)):
                shutil.copytree(src, destination+getTimeStamp())
            else:
                shutil.copytree(src, destination)
        else:
            shutil.copy(src, destination)
    else:
        print src+" not found"

我一直在使用这种方法,但是我最近在运行此代码时遇到了错误:

copy("/home/midgar/logs/logger.xml", currentPath+"/testrun/logs/logger.xml")

错误:IOError:[Errno 2]没有这样的文件或目录:' gatherLogs / testrun / logs / logger.xml'

如果要查找的文件或目录是src,我会理解这个错误意味着什么,但这是导致错误的目的地。我发现抛出错误的这行代码就行了:" shutil.copy(src,destination)"在我的复制方法中。

到目前为止,我的复制方法只是覆盖了现有文件,如果有现有目录,它会创建一个带有时间戳的新文件。在这种情况下,目标文件仍然不存在。那么,问题是什么呢?为什么我在DESTINATION路径中遇到此错误(当我通常希望在SRC路径中看到这种错误时)。

可能是因为这是一个.xml文件吗?

2 个答案:

答案 0 :(得分:3)

当我收到此错误时,通常意味着其中一个文件夹不存在。

我写了一个简单的脚本来测试它。在下面的脚本中,备份文件夹确实存在,但今天的文件夹不存在。当我运行脚本时,我得到了与你相同的错误。

IOError:[Errno 2]没有这样的文件或目录:' backup / today / my_file.txt'

import shutil
shutil.copy("my_file.txt", "backup/today/my_file.txt")

如果您的所有文件夹都存在,我会检查以确保它们的权限没有更改。

答案 1 :(得分:1)

默认情况下,shutil.copytree()跟随(解析)符号链接。如果符号链接断开,则会引发No such file or directory异常。一种解决方法是指定通过传递symlinks=True来复制未解析的符号链接。