【发布时间】:2020-11-11 22:59:43
【问题描述】:
我正在尝试使用 while 循环来遍历文件夹中的 .xml 文件。但是,在 while 循环运行时,文件被添加到文件夹中。这是我目前使用的代码的简化版本:
import os
my_folder = "d:\\xml\\"
while True:
files = [f for f in os.listdir(my_folder) if f.endswith(".xml")]
while files:
for file in files:
# do whatever with the xml file
os.remove(my_folder + file)
files = [f for f in os.listdir(my_folder) if f.endswith(".xml")]
我想做的是通过仅用一行填充文件列表来整理代码。我想要类似的东西:
while files = [f for f in os.listdir(my_folder) if f.endswith(".xml")]:
但是,我知道这行不通。我想 Python 可以做到这一点,但我不知道正确的语法。
补充说明: 我正在使用带有 Python 3.7.6 的 Windows 10
【问题讨论】:
-
你不能删除内部
while并只使用while True: files = ...; for file in files: ...吗? -
从 3.8 开始有赋值运算符
while files := [f for f... -
我更喜欢两个循环的方法。您可以使用一个函数来使工作的划分更加清晰,但总体思路是外部循环获取一次性快照,对其进行处理,然后执行 time.sleep。内部循环在该快照上工作,直到完成。
-
我想它会因为如果没有文件它会忽略“文件中的文件”循环......
标签: python while-loop