2017-02-23 116 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

相关问题