【发布时间】:2015-10-20 00:14:55
【问题描述】:
我正在使用shutil python模块在linux redhat机器上复制文件和目录。
我编写了以下方法,它接受 2 个参数:src(正在收集的文件或目录的路径)和目标(将收集的日志/目录粘贴到的所需新路径)。
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] No such file or directory: 'collectedLogs/testrun/logs/logger.xml'
如果它正在查找的文件或目录是 src,我会理解此错误意味着什么,但这是导致错误的目标。我发现抛出错误的这行代码在我的复制方法中转到以下行:“shutil.copy(src,destination)”。
到目前为止,我的复制方法只是覆盖现有文件,如果存在现有目录,它会创建一个带有时间戳的新目录。在这种情况下,目标文件无论如何都不存在。那么,可能是什么问题?为什么我在 DESTINATION 路径中收到此错误(我通常希望在 SRC 路径中看到这种错误)。
可能是因为这是一个 .xml 文件?
【问题讨论】:
-
请注意,
home/midgar/logs和collectedLogs/testrun/logs/logger.xml都是相对路径。根据您当前的工作目录(bash 中的$PWD),这将具有不同的含义。 -
这是一个很好的观点,我实际上做了一个编辑,因为我有一个类型(它应该是“/home”,而不是“home”)。此外,变量“currentPath”是完整路径的开始,使 src 和 dest 都成为完整路径
-
假设
/home/midgar/logs是一个目录,你要求shutil.copy将一个目录复制到一个文件中。对吗? -
伙计,对于最初帖子中的所有错误,我真的很抱歉,我又漏掉了一些东西。我实际上是从“/home/midgar/logs/logger.xml”中提取一个文件。当然,我为此更改编辑了原始帖子。
标签: python xml linux file shutil