保留txt文件中的标题行,同时更改其余数据

时间:2017-08-16 16:20:10

标签: python python-2.7 nameerror

我有许多以网格形式表示空间数据的txt文件,基本上是相同维度的数组,其中每个值表示关于相应地块的特征。我一直试图编写一个导入每个文件的序列,添加" -9999"在整个网格的边界上,并保存到其他相同的txt文件。

每个txt文件的前6行都是标题行,不应该更改。

我的进展如下:

for datfile in spatialfiles:

    results = []
    borderrow = []

    with open('{}.txt'.format(datfile)) as inputfile:
        #header = inputfile.readlines()
        for line in inputfile:
            row = ['-9999'] + line.strip().split(' ') + ['-9999']
            results.append(row)
            for cell in range(len(row)):
                borderrow.append('-9999')
    results = [borderrow] + results[6:] + [borderrow]

    with file("{}-new.txt".format(datfile), 'w') as outputFile:
        for row in header[:6]:
            outputFile.write(row)
        for row in results:
            outputFile.write(row)

" header = inputfile.readlines()"已被注释掉,因为它似乎导致一个NameError,其中" row"不再被认可。与此同时,我还没有找到另一种方法来保留6个标题行以便稍后导出。

为什么readlines()似乎改变了在仅用于写入变量时迭代输入文件行的能力?我错过了什么? (关于我毫无疑问臃肿的代码的任何其他指针总是受欢迎!)

1 个答案:

答案 0 :(得分:0)

readlines()将整个文件读入内存,将其解析为列表,并留下指向文件末尾的指针。当您尝试再次读取同一文件时,它将尝试从指针继续读取,该指针已在文件的末尾。调用readlines()一次并使用计数器遍历列表,该计数器会在6行之后更改循环的行为。