环路滤波器

我想说的话:
对于x中的x,如果<表达>:
<做某事>
例如
对于os.listdir(dir)中的文件名,如果文件名[-4:] =='.xml':
<做某事>
而不是不必说:
对于os.listdir(dir)中的文件名:
如果文件名[-4:] =='.xml':
<做某事>
或者
对于(f in os.listdir(dir),如果f [-4] =='.xml')中的文件名:
<做某事>
我缺少有捷径吗?

# 回答1


ghz aécrit:
不是Afaik,有时我后悔 - 但是第一个选择是好的
足够的恕我直言.

我宁愿使用os.path.splitext或str.endswith,而不是下标,但是ymmv.
# 回答2


8月28日,12:20*pm,ghz 从全球进口全球
从OS导入路径
dir ='pathtofiles'
ext ='*.xml'
对于Glob中的文件名(path.join(dir,ext)):
打印文件名
# 回答3


在28 Elo,13:20,ghz (增加布鲁诺的评论)
这种样式提供了可重复使用的过滤器/发电机功能,并且
作为奖励,前循环变得更容易理解.
从OS.Path进口腹部
从Glob Import Iglob
def ipathnames(模式):
iglob(模式)中n的返回(abspath(n))
对于iPathnames中的XMLFILE('*.xml'):
<做某事>
- 蒂莫
# 回答4


在2008年8月28日,上午6:20上午6:20,GHz 好吧,还有另一种方法可以使用函数内置的过滤器:
对于过滤器中的文件名(lambda f:f.endswith('.xml'),os.listdir('.')):
打印文件名
您可以使用Itertool.
使用任意迭代.我认为您的第一个例子:
对于os.listdir('.')中的文件名:
如果filename.endswith('.xml'):
<做某事>
虽然是最可读的.
- -
杰瑞
# 回答5


ghz 如果您不喜欢这个的原因是额外的缩进,一个
可能性是
对于os.listdir(dir)中的文件名:
如果文件名[-4:]!='.xml':
继续
<做某事>
-m-
# 回答6


杰里·希尔(Jerry Hill)写道:
进口地球
Emile

标签: python

添加新评论