在Python中,如何在循环中排除以特定字母开头的文件?

13 投票
12 回答
26988 浏览
提问于 2025-04-15 18:51

我正在写一个Python脚本,这个脚本会遍历一个文件夹,收集特定的文件,但有一些文件我想排除,它们的名字都是以相同的开头。

示例代码:

for name in files:
   if name != "doc1.html" and name != "doc2.html" and name != "doc3.html":
      print name

假设这个文件夹里有100个HTML文件,它们的名字都是以'doc'开头。有什么简单的方法可以把它们排除掉吗?

抱歉,我刚学Python,我知道这可能是个基础问题。

提前谢谢你们。

12 个回答

5

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则满足时,程序才会做出反应。

比如说,如果你想让程序在用户输入一个特定的数字时,显示一条消息,你就需要使用条件语句。条件语句就像是一个检查点,程序会在这里停下来,看看条件是否成立。如果成立,程序就会执行你设定的操作;如果不成立,程序就会跳过这些操作,继续往下执行。

这样做的好处是,程序可以根据不同的输入做出不同的反应,使得程序更加灵活和智能。

for name in files:
    if not name.startswith("doc"):
        print name
6

如果你觉得函数式编程更适合你的风格,Python 提供了一个很简单的方法来过滤列表,那就是使用 filter() 函数:

>>> files = ["doc1.html", "doc2.html", "doc3.html", "index.html", "image.jpeg"]
>>> filter_function = lambda name: not name.startswith("doc")
>>> filter(filter_function, files)
['index.html', 'image.jpeg']

另外,你还可以看看 apply()、map()、reduce() 和 zip() 这些函数。

26
if not name.startswith('doc'):
     print name

如果你有更多需要排除的前缀,你甚至可以这样做:

if not name.startswith(('prefix', 'another', 'yetanother')):
     print name

startswith 可以接受一个前缀的元组。

撰写回答