簡體   English   中英

Errno 2 使用 python shutil.py 文件目標沒有這樣的文件或目錄

[英]Errno 2 using python shutil.py No such file or directory for file destination

我正在使用 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 文件嗎?

當我收到此錯誤時,通常意味着其中一個文件夾不存在。

我寫了一個簡單的腳本來測試它。 在下面的腳本中,備份文件夾確實存在,但今天的文件夾不存在。 當我運行腳本時,我得到的錯誤與你相同。

IOError:[Errno 2]沒有這樣的文件或目錄:'backup / today / my_file.txt'

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

如果您的所有文件夾都存在,我會檢查以確保它們的權限沒有更改。

默認情況下, shutil.copytree()跟隨(解析)符號鏈接。 如果符號鏈接斷開,則會引發No such file or directory異常。 一種解決方法是指定通過傳遞symlinks=True來復制未解析的symlinks=True

我最近也遇到了這個錯誤。 在我的例子中,文件不會被創建,因為文件名和目錄結構超過了最大 260 個字符。 解決方案:選擇一個較短的文件名(或完整的文件路徑名)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM