我肯定我漏掉了一些显而易见的东西,可能之前有人问过我,但我似乎无法把关键词组合在一起给我一个答案。
如何写出文件的前n行(实际上,与file.readlines()[0:10]相反)?
例如,我有一个接收输入文件的函数,需要处理来自后一部分的信息,抛出一个头。不过,我想保留多行标题,以便放回输出文件中。def readInfile(infile):
with open(infile, 'r') as ifh:
# Skip exta info at top of file
header = ifh.readline()[0:10] # Keep the header for later?
noheader = ifh.readlines()[11:]
for line in noheader:
# Do the useful stuff
usefulstuff = foo()
return usefulstuff, header
然后,我想用输入文件的格式,用它们的头写出:print(header)
for thing in usefulstuff:
print(thing)
是否缺少某个方法,或者readlines在返回列表时不适合此操作?
我以为for line in header:
print(line)
行得通,但在这种情况下似乎不行——所以我肯定做错了什么?
编辑
为什么在第二个范围尝试使用readlines()[]两次失败?
我修复了@pbuck指出的代码,标题行应该是readlines()而不是readline,但是现在noheader变量是空的?我真的要打开文件两次吗?!