在Python中,如何在循环中排除以特定字母开头的文件?
我正在写一个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 可以接受一个前缀的元组。