这里是我的问题,它可能不是很复杂,但我正在学习Python。我正在尝试读取多个文件(所有文件都具有相同的格式),同时必须从第32行开始读取它们,不知怎的,我找不到最有效的方法。
到目前为止我的代码:
for file in fileinput.input():
entries = [f.strip().split("\t") for f in file].readlines()[32:]
给出错误:AttributeError:'list'对象没有属性'readlines'
我知道另一种可能性是:
sources = open(sys.argv[1], "r").readlines()[32:]
然后只在命令行python3.2 script.py data / * .csv。但这似乎不能正常运作。
感谢您的帮助。
答案 0 :(得分:0)
它只是一个小语法
entries = [f.strip().split("\t") for f in file].readlines()[32:]
应该是:
entries = [f.strip().split("\t") for f in file.readlines()][32:]
答案 1 :(得分:0)
您可以使用openhook
参数。
您可以通过提供开启挂钩来控制文件的打开方式 openhook参数为
fileinput.input()
或FileInput()
。钩子 必须是一个带有两个参数的函数,文件名和模式,以及 返回一个相应打开的文件类对象。两个有用的钩子是 已经由这个模块提供。
import fileinput
def skip32(filename, mode):
f = open(filename, mode)
for i in range(32):
f.readline()
return f
entries = [line.strip().split('\t') for line in fileinput.input(openhook=skip32)]
BTW,最后一行可以替换为(使用csv
模块):
import csv
entries = list(csv.reader(fileinput.input(openhook=skip32), delimiter='\t'))