@Jlokys

Как сделать что бы в программа читала один файл и измененные данные записывала в другой на Python?

Есть программа которая редактирует файл как сделать что бы он редактировала не тот же файл что я выбрал а только прочитала его и записала изменения в другом?

Вот сам код

def change():
    file_name = fd.askopenfilename()
    f = open(file_name,'r')
    lines = f.read()
    lines = lines.replace('Путей в парке', '')
    lines = lines.replace(';--------------', '')
    while "  " in lines:
        lines = lines.replace("  ", " ")

    level1 = None
    level2 = None
    for line in lines.split('\n'):
        result1 = re.match('^@\s+(\d+)\s+(.*)$', line)
        if result1:
            level1 = f'{result1.group(1)};{result1.group(2)}'
            continue
        if re.match('#', line):
            level2 = line
            continue
        if level1 and level2:
            if level1 and level2 and line:
                line = line.replace(' ', '; ')
                print(f'{level1};{level2}{line}')
                f.close()
                save_changes = open(file_name, 'w')
                save_changes.writelines(lines)
                save_changes.close()
  • Вопрос задан
  • 546 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Примерно как-то так
with open('somefile', 'w+') as write_file:
     with open('someotherfile', 'r') as read_file:
          data = read_file.read()
          outdata = f(data)
          write_file.write(outdata)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@TheAngryPython
# читаем исходник
text = open('file1.txt', 'r').read()
# изменяем
text += 'test'
# записываем во второй
f = open('file2.txt', 'w')
f.write(text)
f.close()

В вашем случае
def change():
    file_name = fd.askopenfilename()
    file_name1 = 'второй файл'
    f = open(file_name,'r')
    lines = f.read()
    lines = lines.replace('Путей в парке', '')
    lines = lines.replace(';--------------', '')
    while "  " in lines:
        lines = lines.replace("  ", " ")

    level1 = None
    level2 = None
    for line in lines.split('\n'):
        result1 = re.match('^@\s+(\d+)\s+(.*)$', line)
        if result1:
            level1 = f'{result1.group(1)};{result1.group(2)}'
            continue
        if re.match('#', line):
            level2 = line
            continue
        if level1 and level2:
            if level1 and level2 and line:
                line = line.replace(' ', '; ')
                print(f'{level1};{level2}{line}')
                f.close()
                save_changes = open(file_name1, 'w')
                save_changes.writelines(lines)
                save_changes.close()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы