linux 错误号2 using python shutil.py文件目标没有此类文件或目录

qgelzfjb  于 2022-12-11  发布在  Linux
关注(0)|答案(3)|浏览(194)

我正在使用shutilpython模块在linux redhat机器上复制文件和目录。
我写了下面的方法,它有两个参数:src(要收集的文件或目录的路径)和destination(要将收集的日志/目录粘贴到的所需新路径)。

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]没有这样的文件或目录:'已收集日志/测试运行/日志/记录器. xml'
如果要查找的文件或目录是src,我可以理解这个错误意味着什么,但这是导致错误的目的地。我发现引发错误的这行代码指向以下行:“shutil.copy(源,目标)”。
到目前为止,我的复制方法只是覆盖现有的文件,如果有一个现有的目录,它会创建一个带有时间戳的新目录。在这种情况下,目标文件并不存在。那么,问题可能是什么呢?为什么我会在DESTINATION路径上收到这种错误(当我通常希望在SRC路径上看到这种错误时)。
可能是因为这是一个.xml文件吗?

rekjcdws

rekjcdws1#

当我得到这个错误,它通常意味着其中一个文件夹不存在.
我写了一个简单的脚本来测试这一点。在下面的脚本中,备份文件夹确实存在,但today文件夹不存在。当我运行脚本时,我得到了与您相同的错误。
IOError:[Errno 2]没有这样的文件或目录:'备份/今天/我的文件. txt'

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

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

63lcw9qa

63lcw9qa2#

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

ghhkc1vu

ghhkc1vu3#

我最近也遇到了这个错误。在我的例子中,文件不会被创建,因为文件名和目录结构超过了最大260个字符。解决方案:请选择较短的文件名(或完整的文件路径名)。

相关问题