在python中,如果文件以特定字母集开头,如何从循环中排除文件?

Rut*_*uth 12 python string

我正在编写一个Python脚本,它通过一个目录并收集某些文件,但是有一些我想要排除的文件都是以相同的方式开始的.

示例代码:

for name in files:
   if name != "doc1.html" and name != "doc2.html" and name != "doc3.html":
      print name
Run Code Online (Sandbox Code Playgroud)

假设目录中有100个HTML文件都以'doc'.排除它们最简单的方法是什么?

对不起,我是Python的新手,我知道这可能是基本的.

提前致谢.

Nad*_*mli 24

if not name.startswith('doc'):
     print name
Run Code Online (Sandbox Code Playgroud)

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

if not name.startswith(('prefix', 'another', 'yetanother')):
     print name
Run Code Online (Sandbox Code Playgroud)

startswith可以接受前缀元组.


Kar*_*der 5

for name in files:
    if not name.startswith("doc"):
        print name
Run Code Online (Sandbox Code Playgroud)


Tro*_*ell 5

如果您发现函数式编程更适合您的风格,则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']
Run Code Online (Sandbox Code Playgroud)

还请看一下apply(),map(),reduce()和zip()。