我试图从多个输入文件中读取,并将每个文件中相邻的第二行打印为表
import sys
import fileinput
with fileinput.input(files=('cutflow_TTJets_1l.txt ', 'cutflow_TTJets_1l.txt ')) as f:
for line in f:
proc(line)
def proc(line):
parts = line.split("&") # split line into parts
if "&" in line: # if at least 2 parts/columns
print parts[1] # print column 2
但是我得到了一个“AttributeError:FileInput实例没有属性”__exit__
”
问题是,从python 2.7.10开始,fileinput模块不支持用作上下文管理器,即
with
语句,因此必须自己处理关闭序列的问题。以下方法应该有效:注意,在python 3的最新版本中,可以将此模块用作上下文管理器。
对于问题的第二部分,假设每个文件的格式与
xxxxxx & xxxxx
格式的数据行数相同,则可以从每个数据的第二列创建一个数据表,如下所示:从空列表开始,该列表将是一个表,其中的行将是每个文件中第二列条目的列表:
现在遍历
fileinput
序列中的所有行,使用fileinput.isfirstline()
检查我们是否在一个新文件中并创建一个新行:现在
table
将是真正需要的转置,即包含每个文件的给定行的第二列条目的每一行。要转置列表,可以使用zip
,然后在转置表的行上循环,使用join
字符串方法用逗号分隔符(或您想要的任何分隔符)打印每一行:如果某物有
open
/close
方法,请使用contextlib.closing
:相关问题 更多 >
编程相关推荐