我有一个简单的文本文件,其中包含按此示例以空格分隔的 ASCII 文本中的数字。
150604849
319865.301865 5810822.964432 -96.425797 -1610
319734.172256 5810916.074753 -52.490280 -122
319730.912949 5810918.098465 -61.864395 -171
319688.240891 5810889.851608 -0.339890 -1790
*<continues like this for millions of lines>*
基本上我想按原样复制第一行,然后对于接下来的所有行,我想偏移第一个值(x),偏移第二个值(y),保持第三个值不变,偏移最后一个数字的一半。
我将以下代码拼凑在一起作为 Python 学习经验(如果它粗鲁和冒犯,我真的很抱歉,我真的没有冒犯的意思),它工作正常。但是,我使用它的输入文件大小为几 GB,我想知道是否有办法加快执行速度。目前对于一个 740 MB 的文件,它需要 2 分 21 秒
import glob
#offset values
offsetx = -306000
offsety = -5806000
files = glob.glob('*.pts')
for file in files:
currentFile = open(file, "r")
out = open(file[:-4]+"_RGB_moved.pts", "w")
firstline = str(currentFile.readline())
out.write(str(firstline.split()[0]))
while 1:
lines = currentFile.readlines(100000)
if not lines:
break
for line in lines:
out.write('\n')
words = line.split()
newwords = [str(float(words[0])+offsetx), str(float(words[1])+offsety), str(float(words[2])), str((int(words[3])+2050)/2)]
out.write(" ".join(newwords))
非常感谢