您需要在每次迭代中读取一个咬合,对其进行分析,然后再写入另一个文件或中
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©
UPD:
它的工作速度非常慢(这要归功于jamylak)。所以我改变了它:
import sysimport redef 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 Truedef 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)