所以我编写了一个小脚本,通过将“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()
答案 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的更多信息。