我正在尝试使用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能够做到这一点,但是我不知道正确的语法。
补充说明:我使用的是Windows 10和Python 3.7.6
发布于 2020-11-11 22:44:06
您可以通过删除内部while循环和对files的第二次赋值来简化代码。这将无限循环,查看目录中是否有xml文件,如果有,则在继续循环之前处理并删除它们。(如果没有新文件,您还可以添加一个简短的sleep。)
while True:
files = [f for f in os.listdir(my_folder) if f.endswith(".xml")]
for file in files:
# do whatever with the xml file
os.remove(my_folder + file)如另一个答案所示,您还可以使用:=运算符和类似以下内容...
while True:
while (files := [...]):
.....。但这将与没有内部while时的行为完全相同。例如,如果你想在暂时没有文件的情况下做一些事情,例如,在外部循环中有不在内部循环中的代码,这可能会有所不同。
https://stackoverflow.com/questions/64788466
复制相似问题