Ich arbeite an irgendeinem Projekt. Ich habe C++ und Java-Hintergrund, aber ich habe keinen Python-Hintergrund. Ich habe gegeben txt-Datei wie folgt:Ich kann Variable in den inneren nicht erreichen, wenn sonst Aussagen
G1 X000 Y00
X00
Z000
G0 X121.212 Z5.32
X0.00 Y3.000
ich brauche G hinzuzufügen .. zu den nächsten Zeilen, bis es neu G sieht ... Es kann G1 oder G0 oder G5 etc sein .. so wird ein Ergebnis führen, wie unten
G1 X000 Y00
G1 X00
G1 Z000
G0 X121.212 Z5.32
G0 X0.00 Y3.000
Mein Code ist unten.
command = ""
with open('Model.ngc', 'r') as f:
with open("out.txt", "w") as f1:
for line in f:
if line in ['\n', '\r\n']:
f1.write(line)
elif line.startswith('M', 0, 1):
f1.write(line)
else:
command = line.split(' ', 1)[0]
if command == 'G0' or command == 'G00':
command = 'G00'
elif command == 'G1' or command == 'G01':
command = 'G01'
elif command == 'G2' or command == 'G02':
command = 'G02'
elif command == 'G3' or command == 'G03':
command = 'G03'
if (line.startswith('G0 ', 0, 3) or line.startswith('G1 ', 0, 3) or line.startswith('G2 ', 0, 3) or
line.startswith('G3 ', 0, 3) or line.startswith('G4 ', 0, 3) or line.startswith('G5 ', 0, 3) or
line.startswith('G6 ', 0, 3) or line.startswith('G7 ', 0, 3) or line.startswith('G8 ', 0, 3) or
line.startswith('G9 ', 0, 3)):
if command == 'G00':
f1.write(line.replace('G0', 'G00'))
elif command == 'G01':
f1.write(line.replace('G1', 'G01'))
elif command == 'G02':
f1.write(line.replace('G2', 'G02'))
elif command == 'G03':
f1.write(line.replace('G3', 'G03'))
elif command == 'G04':
f1.write(line.replace('G4', 'G04'))
elif command == 'G05':
f1.write(line.replace('G5', 'G05'))
elif command == 'G06':
f1.write(line.replace('G6', 'G06'))
print(command)
else:
# print(line)
if (line.startswith('G00') or line.startswith('G01') or line.startswith('G02') or
line.startswith('G03') or line.startswith('G04') or line.startswith('G05') or
line.startswith('G06') or line.startswith('G07') or line.startswith('G08') or line.startswith('G09')):
# Because it can be already converted
f1.write(line)
else:
f1.write(command + line)
Ich versuche, G1 oder G0 aus vorheriger Zeile zu erhalten und zu Befehl zuweisen. Es klappt. wenn ich versuche, in der letzten else statement zu erreichen, zeigt es, dass mein Befehl Variable leer ist und ich weiß nicht, wie man damit umgeht.
es funktioniert nicht. Traceback (jüngste Aufforderung zuletzt): File "NgcToGcode.py", Zeile 6, in wenn Wort [0] und das Wort [0] [0] == "G": Indexerror: Listenindex aus Bereich –
Soulmaster
können Sie prüfen, ob die gelesene Zeile direkt von Ihrer Seite ist? Coz, ich habe es in der Konsole versucht und erst dann die Antwort hier geteilt! Dieses Snippet sollte direkt nach 'mit open (" out.txt "," w ") als f1 kommen:' –
oder es gibt einen Fall, wenn die gelesene Zeile leer ist! Ich habe den Schnitt dafür hinzugefügt. –