Как перестать заполнять файл в цикле for после определенной строки - PullRequest
0 голосов
/ 20 марта 2019

Я решил написать программу для своего 3D-принтера, которая конвертирует строки в строки g-кода. Вопрос связан с модулем, который очищает файл, сгенерированный слайсером, от ненужного мусора, оставляя чистый g-код.

Файл g-кода имеет следующую структуру: заголовок, тело g-кода и нижний колонтитул. Конец заголовка и начало тела g-кода всегда известны. Чтобы найти начало, я использую индекс (211):

for index, line in enumerate(string_list_form_old_file, start=1):
    if index == 202:
        new_file.write(line)
    if index >= 211:
        new_file.write(line)

Но предсказать, где закончится тело g-кода и начнется нижний колонтитул, невозможно.

И вот тут начинается моя проблема. С помощью этого кода модуль записывает все строки из строки 211 в новый файл, включая нижний колонтитул.

Как я могу остановить запись, когда встречаю строку, равную «G1 E-1.7000 F1800 \ r \ n» - строка во всех файлах одинакова.

Ответы [ 3 ]

0 голосов
/ 20 марта 2019

Я пробовал такой простой способ.По логике все должно получиться, но на практике нижний колонтитул остается в новом файле.

код

полный новый файл

0 голосов
/ 20 марта 2019

Путем длительного поиска ошибки я перепроверил, и если 'G1 E-1.7000 F1800' точно найден в файле 1 раз.Оказалось, что нет ...

0 голосов
/ 20 марта 2019

Возможно, вы ищете ключевое слово break в python.При таком использовании

for index, line in enumerate(string_list_form_old_file, start=1):
    if "G1 E-1.7000 F1800" in line:
        break
    if index == 202:
        new_file.write(line)
    if index >= 211:
        new_file.write(line)

программа выйдет из цикла for, когда встретит строку G1 E-1.7000 F1800 в строке.

Обратите внимание, что вы также можете выполнить сложныйСравнение со строкой, включая символы новой строки и возврата каретки, но сравнение строк часто ненадежно.Однако приведенный выше пример может также выйти из цикла, если он встретит строку в другом контексте, например в комментарии.

...