Infile замена очищает файл - PullRequest
       8

Infile замена очищает файл

0 голосов
/ 26 сентября 2019

Я пытался заменить некоторые строки html на месте

Но это приводит к пустому файлу.

Я проверяю, есть ли в строке конкретная строка, и пытаюсь заменить ее

with fileinput.FileInput(bmark_file, inplace=True, backup='.bak') as file:
    for line in file :
        unique="id="+core
        if unique in line:
            print(line.replace(link['href'], vboard[core.lower()]['benchmarks.tls']), end='')

На самом деле модуль infile не должен очищать файл, даже если условие не выполнено

Любые входные данные для этого будут полезны

1 Ответ

1 голос
/ 26 сентября 2019

Вы только print при прохождении теста, поэтому любая строка, не прошедшая тест, не попадает в новый файл (FileInput с inplace=True заменяетисходный файл с тем, что вы излучаете на sys.stdout; если вы ничего не излучаете, он ничего не записывает).Если вы хотите, чтобы остальные строки не изменялись, вам нужно вывести исходную строку в случае else:

with fileinput.FileInput(bmark_file, inplace=True, backup='.bak') as file:
    for line in file :
        unique="id="+core
        if unique in line:
            print(line.replace(link['href'], vboard[core.lower()]['benchmarks.tls']), end='')
        else:
            print(line, end='')  # Or just sys.stdout.write(line)

Тот факт, что ваш файл оказался пустым, означает, что тест unique in line никогда не проходил, так что вы можете ожидать несуществующие данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...