【问题标题】:How to run infinite while loop on list如何在列表上运行无限while循环
【发布时间】:2014-01-12 14:11:29
【问题描述】:

我正在尝试在我的 Ubuntu 机器上运行此代码,以便它将任何新的 .txt 文件从 out 文件夹转移到 in 文件夹,但我可能做错了什么,因为它不起作用。

import shutil
import os

os.chdir("/test/out")
srcdir = os.listdir("/test/out")
dstdir = "/test/in"
srcdir = True

def filemv():
    for file in srcdir:
        if file.endswith(".txt"):
            shutil.move(file, dstdir)
            print(file)
while srcdir is True:
    filemv()

【问题讨论】:

  • 这将最大化 CPU 并可能导致系统冻结。你应该重新考虑你的想法。
  • for file in srcdir 失败,因为它是 True 并且您不能遍历它。
  • 除了您的代码中已经指出的错误:您对“工作”的定义是什么?预期的结果是什么,您实际得到的结果是什么?
  • 另外,您已经声明了两次srcdir...这是一个布尔值,而不是您可能预期的os.listdir() 的结果。
  • 嗨 Lukas,我希望这个小脚本在 srcdir 上监听新的 *.txt 文件。一旦新文件进入文件夹,它将立即移动到 dstdir。谢谢大佬

标签: python list loops


【解决方案1】:

问题是您只调用了一次os.listdir()。如果您不再调用它,您将不会注意到任何新文件。

另外,为这类事情运行繁忙的循环可能是个坏主意。看看How to watch a directory for changes? 和其中的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 2023-03-29
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2015-06-25
    • 2018-07-12
    • 2018-10-17
    相关资源
    最近更新 更多