这个Python代码如何工作,将所有文本文件存储在列表中

时间:2018-06-11 02:11:12

标签: python

我是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语句检查文本文件,然后做一些事情......

但是第一个代码对我来说太压缩了,是否可以将其分解为简单或更逻辑的方式?

1 个答案:

答案 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