У меня есть код для анализа нескольких текстовых файлов, извлечения заданной части из каждого и записи их в другой текстовый файл. Я повторяю этот процесс снова и снова, извлекая следующую часть файлов и записывая их в другой текстовый файл.
Я использую переменную cube_i
для перехода от одного файла к другому и переменную layer
для перемещения из одной части текстовых файлов в другую. Однако созданные мной циклы не go дальше, чем cube_i=0
и layer=0
. Любые предложения о том, как я могу перейти к увеличению значения этих переменных?
rgx_start = re.compile(r'Z down') # Second line before the start of the layer code: "G0Z2 ; Z down"
rgx_end = re.compile(r'Layer #') # Second line after the end of the layer code: "; Layer #<integer>"
if layer in range(0, (layers_total + 1)):
final_code.write('; ------------------------------\n')
label = '; Layer #{}\n'.format(layer)
final_code.write(label)
final_code.write('; ------------------------------\n')
with open(first_file,'r') as gcode: # Opening the first file to write the powder drop
for i, line in enumerate(gcode.readlines()):
if i in range(powdrop_start, (powdrop_end + 1)): # Writing the powder drop
final_code.write(line)
cube_i = 0 # Reseting the cube_i variable
if cube_i in range(0, (parts_total + 1)):
label_cube = '; PART #{}\n'.format(cube_i)
final_code.write(label_cube)
# Opening each text file separately
with open(f_path, 'r') as gcode: # f_path contains cube_i
lines = gcode.readlines()
start_i = prev_start[cube_i]
for i, line in enumerate(lines[start_i + 1:]): # Searching for the beginning of given layer
if rgx_start.search(line):
layer_start = start_i + i + 3
break
for i, line in enumerate(lines[layer_start + 1:]): # Searching for the end of given layer
if rgx_end.search(line):
layer_end = layer_start + i - 1
break
for i, line in enumerate(lines[layer_start:layer_end + 1]):
final_code.write(line)
prev_start.append(layer_start)
prev_end.append(layer_end)
cube_i = + 1
if layer == 0: # Writing the zeroth layer footer
with open(first_file, 'r') as gcode:
for i, line in enumerate(gcode.readlines()):
if i == zeroth_ftr:
final_code.write(line)
layer =+ 1