首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python while循环

Python while循环
EN

Stack Overflow用户
提问于 2020-11-11 22:34:32
回答 1查看 87关注 0票数 2

我正在尝试使用while循环遍历文件夹中的.xml文件。但是,当while循环运行时,文件会被添加到文件夹中。这是我目前使用的代码的简化版本:

代码语言:javascript
复制
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")]

我想要做的是整理代码,只有一行填充文件列表。我想要像这样的东西:

代码语言:javascript
复制
while files = [f for f in os.listdir(my_folder) if f.endswith(".xml")]:

但是我知道这是行不通的。我可以想象Python能够做到这一点,但是我不知道正确的语法。

补充说明:我使用的是Windows 10和Python 3.7.6

EN

回答 1

Stack Overflow用户

发布于 2020-11-11 22:44:06

您可以通过删除内部while循环和对files的第二次赋值来简化代码。这将无限循环,查看目录中是否有xml文件,如果有,则在继续循环之前处理并删除它们。(如果没有新文件,您还可以添加一个简短的sleep。)

代码语言:javascript
复制
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)

如另一个答案所示,您还可以使用:=运算符和类似以下内容...

代码语言:javascript
复制
while True:
    while (files := [...]):
        ...

..。但这将与没有内部while时的行为完全相同。例如,如果你想在暂时没有文件的情况下做一些事情,例如,在外部循环中有不在内部循环中的代码,这可能会有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64788466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档