我是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 语句检查文本文件,然后做点什么。
但是第一段代码对我来说太压缩了,有没有可能把它分解成更简单或更合乎逻辑的方式?
在第一个示例中,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