gpt4 book ai didi

Python - 打开和更改大文本文件

转载 作者:太空狗 更新时间:2023-10-30 01:14:22 25 4
gpt4 key购买 nike

我有一个 ~600MB Roblox 类型的 .mesh 文件,在任何文本编辑器中读起来都像文本文件。我在下面有以下代码:

mesh = open("file.mesh", "r").read()
mesh = mesh.replace("[", "{").replace("]", "}").replace("}{", "},{")
mesh = "{"+mesh+"}"
f = open("p2t.txt", "w")
f.write(mesh)

它返回:

Traceback (most recent call last):
File "C:\TheDirectoryToMyFile\p2t2.py", line 2, in <module>
mesh = mesh.replace("[", "{").replace("]", "}").replace("}{", "},{")
MemoryError

这是我的文件示例:

[-0.00599, 0.001466, 0.006][0.16903, 0.84515, 0.50709][0.00000, 0.00000, 0][-0.00598, 0.001472, 0.00599][0.09943, 0.79220, 0.60211][0.00000, 0.00000, 0]

我能做什么?

编辑:

我不确定将此标记为重复的其他线程中的 head、follow 和 tail 命令是什么。我尝试使用它,但无法正常工作。该文件也是一大行,它没有分成几行。

最佳答案

您需要每次迭代读取一口,对其进行分析,然后写入另一个文件或sys.stdout。试试这个代码:

mesh = open("file.mesh", "r")
mesh_out = open("file-1.mesh", "w")

c = mesh.read(1)

if c:
mesh_out.write("{")
else:
exit(0)
while True:
c = mesh.read(1)
if c == "":
break

if c == "[":
mesh_out.write(",{")
elif c == "]":
mesh_out.write("}")
else:
mesh_out.write©

更新:

它的运行速度非常慢(感谢 jamylak)。所以我改变了它:

import sys
import re


def process_char(c, stream, is_first=False):
if c == '':
return False
if c == '[':
stream.write('{' if is_first else ',{')
return True
if c == ']':
stream.write('}')
return True


def process_file(fname):
with open(fname, "r") as mesh:
c = mesh.read(1)
if c == '':
return
sys.stdout.write('{')

while True:
c = mesh.read(8192)
if c == '':
return

c = re.sub(r'\[', ',{', c)
c = re.sub(r'\]', '}', c)
sys.stdout.write(c)


if __name__ == '__main__':
process_file(sys.argv[1])

所以现在它在 1.4G 文件上工作了大约 15 秒。运行它:

$ python mesh.py file.mesh > file-1.mesh

关于Python - 打开和更改大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com