我正在编写一个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可以接受前缀元组.
for name in files:
if not name.startswith("doc"):
print name
Run Code Online (Sandbox Code Playgroud)
如果您发现函数式编程更适合您的风格,则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()。