此 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 语句检查文本文件,然后做点什么。

但是第一段代码对我来说太压缩了,有没有可能把它分解成更简单或更合乎逻辑的方式?

在第一个示例中,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

相关内容

  • 没有找到相关文章

最新更新