我是Python的初学者。我正在进行将所有文本文件的内容复制到电子表格的练习,以下代码将把某些文件夹中的文本文件存储到列表对象中:
path=".\\Excel Spreadsheets"
text_files = [filename for filename in os.listdir(path) if filename.endswith(".txt")]
我很难理解第二行是如何工作的,因为在教科书中,我只看到如下例子:
for filename in os.listdir():
if filename.endswith('.txt'):
os.unlike(filename) #...do something..
我的意思是我只知道第二个代码是如何工作的,比如通过路径循环,if语句检查文本文件,然后做一些事情......
但是第一个代码对我来说太压缩了,是否可以将其分解为简单或更逻辑的方式?
答案 0 :(得分:2)
在第一个示例text_files = [filename for filename in os.listdir(path) if filename.endswith(".txt")]
中,text_files将是文件名列表。这种类型的语句称为列表理解和python的特殊属性,使其简洁。它等同于以下代码:
text_files = []
for filename in os.listdir(path):
if filename.endswith(".txt"):
text_files.append(filename)
循环遍历text_files中的元素将获得与第二位代码相同的结果:
for filename in os.listdir():
if filename.endswith('.txt'):
print(filename)
相当于
text_files = [filename for filename in os.listdir(path) if filename.endswith(".txt")]
for filename in text_files:
print(filename)
有关列表理解的更多信息,请参阅此处:http://www.pythonforbeginners.com/basics/list-comprehensions-in-python