2017-02-23 55 views
2

嗨試圖移動已完成正在處理的日誌,但我認爲我使用shutil錯誤。處理後移動文件

import shutil 

path = '/logs/' 
finDir = '/complete/' 

# parse loop 
def getUniquePath(path): 
    for filename in os.listdir(path): 
     if..processing log 
     shutil.move(filename, finDir) #moves completed files 

我總是收到錯誤,該文件不存在。

因此,我在循環後添加了一個print語句,它正確地打印出文件名和目的地,所以我想我只是不正確地使用shutil.move。

感謝

+0

嘗試做'os.chdir(文件路徑)'第一。 –

回答

1

需要,除非你是在/logs/目錄pathfilename結合。

否則,文件搜索在當前目錄中完成;這導致文件無法找到,或錯誤的文件操作

使用os.path.join(如果在當前目錄中的同名文件爲):

import os 
import shutil 

path = '/logs/' 
finDir = '/complete/' 

# parse loop 
def getUniquePath(path): 
    for filename in os.listdir(path): 
     .. 
     shutil.move(os.path.join(path, filename), finDir) 
     #   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
+0

啊,這很好看。將shutil.move帳戶說...該文件存在目標目錄中?對於我在移動過程中添加「嘗試:」條件是否有意義,因爲我希望它繼續存在錯誤。最好的辦法是什麼? @falsetru – chowpay

+0

@chowpay,使用'試用:...除了...:...'聽起來不錯。 – falsetru

+0

其如此奇怪。所以我添加了'try:shutil.move(os.path.join(path,filename),finDir),除了:pass'並且只有一個文件被移動了。如果我刪除了該嘗試,並且除了所有內容都被移至@falsetru – chowpay

相關問題