gpt4 book ai didi

Python列表理解,可以用于读取多个文件吗?

转载 作者:行者123 更新时间:2023-12-01 05:44:39 27 4
gpt4 key购买 nike

这是我到目前为止的脚本:

#!/usr/bin/env python
import fileinput
from optparse import OptionParser

op = OptionParser()
(options, files) = op.parse_args()
print options
print files
content = []
for line in fileinput.input(files):
# print "reading from " + fileinput.filename()
if (fileinput.isfirstline()):
content.append([])
# print "is reading from the first line"
content[-1].append(line.rstrip())

如您所见,我正在读取所有文件中的所有行并构建这样的结构

[["contents", "file 1"], ["file 2; is one line"], ["file 3", "has", "3 lines in it"]]

据我所知,fileinput 不允许我根据行进行拆分,因此我在每一行上调用 isfirSTLine() 来查看是否我已进入下一个文件。

我是否无法使用列表推导式来优雅地完成这项工作?因为我似乎仅限于所有线路上的单个循环。我可以做一些聪明的事情来让它将文件分开吗?

最佳答案

Is it the case that I cannot use list comprehensions to do this work elegantly? Since I seem to be limited to a single loop over all lines.

一般来说,您应该抵制在列表理解中放入太多内容的冲动。它会使代码更难以阅读和调试。也就是说,列表推导式与 itertools.chain 配合得很好。 ,您可以将多个 for 循环放入一个列表推导式中,甚至可以将下一个列表推导式放入其中。

所以,有很多答案是可能的。以下是其中几个:

[map(str.rstrip, f.readlines()) for f in files]

[[line.rstrip() for line in f] for f in files]

关于Python列表理解,可以用于读取多个文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com