[英]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.