【问题标题】:Moving files after processing处理后移动文件
【发布时间】:2017-07-14 07:26:55
【问题描述】:

您好尝试移动已完成处理的日志,但我认为我使用 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

我不断收到文件不存在的错误。

所以我在循环之后添加了一个打印语句,它正确打印出文件名和目标,所以我认为我只是错误地使用了 shutil.move。

谢谢

【问题讨论】:

  • 先试试os.chdir(path_to_file)

标签: python shutil


【解决方案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)
       #           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

【讨论】:

  • 啊,这看起来很棒。将shutil.move帐户说..文件存在于目标目录中吗?如果出现错误,我希望在移动中继续添加“尝试:”条件对我来说是否有意义。最好的方法是什么? @falsetru
  • 太奇怪了。所以我添加了try: shutil.move(os.path.join(path, filename), finDir) except : pass ,只有一个文件被移动了。如果我删除尝试,除了一切都被移到@falsetru
  • @chowpay,请用更新的代码发布一个单独的问题。
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
相关资源
最近更新 更多