Python,读写文件是否将最终输出文件切割为有限数量的行?

时间:2016-02-19 23:00:29

标签: python file

所以我编写了一个小脚本,通过将“G01”替换为“G1”来转换我的g代码文件命令它完全正常工作,但这些文件非常大,最终可能会有超过10或20k行的码! 我的问题是所有转换代码的文件最终都是4715行,但原始文件有4817行。有趣的是for循环遍历所有行,但只写了第一个4715(我每次将某些内容写入文件时通过简单的a = a + 1检查)!

这是非常简单的代码!

import string
a = 0
b = 0
s = open("test.gcode","r+")
replaced = open("test_replaced.gcode","a")

for line in s.readlines():

    if "G01" in line:
        replaced.write(line.replace("G01", "G1" ))
        print ("G01 ==> G1")
        a = a + 1
    elif "G00" in line:
        replaced.write(line.replace("G00", "G0" ))
        print ("G00 ==> G0")
        a = a + 1
    else:
        replaced.write(line.replace("******", "**" ))
        print ("***")
        a = a + 1

b = b + 1

#replaced.write(line.replace("G01", "G1" ))
#replaced.write(line.replace("G00", "G0" ))



print ("Done! - " + str(a) + " number of operations done!")
print ("Loopcount: " + str(b))
s.close()

1 个答案:

答案 0 :(得分:0)

正如您对问题的评论所指出的那样,您应该用open()语句替换with语句。所以,你的代码就会变成。

...
with open("test.gcode","r+") as s:
    with open("test_replaced.gcode","a") as replaced:
        ...
print ("Done! - " + str(a) + " number of operations done!")
print ("Loopcount: " + str(b))

请注意,脚本末尾不再有close()因为上下文管理器(with)已经关闭了文件。

处理文件的所有代码都需要在with块中。

您可以找到有关上下文管理员here的更多信息。