открыть или создать файл в Python и добавить к нему - PullRequest
0 голосов
/ 08 ноября 2019

как вы выполняете эту серию действий в python?

1) Создайте файл, если он не существует, и вставьте строку

2) Если файл существует, найдите егосодержит строку

3) Если строка не существует, повесьте ее в конце файла

В настоящее время я делаю это таким образом, но пропускаю шаг

ПРАВКА с этим кодом каждый раз, когда я вызываю функцию, кажется, что файл не существует и перезаписывает старый файл

def func():
if not os.path.exists(path):
    #always take this branch
    with open(path, "w") as myfile:
        myfile.write(string)
        myfile.flush()
        myfile.close()
else:
    with open(path) as f:
        if string in f.read():
            print("string found")
        else:
            with open(path, "a") as f1:
                f1.write(string)
                f1.flush()
                f1.close()
    f.close()

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Попробуйте:

with open(path, 'a+') as file:
    file.seek(0)
    content = file.read()
    if string not in content:
        file.write(string)

seek переместит ваш указатель на начало, а запись переместит его до конца.

Редактировать: Кроме того, вам не нужно проверять путь. Пример:

>>> f = open('example', 'a+')
>>> f.write('a')
1
>>> f.seek(0)
0
>>> f.read()
'a'

пример файла не существовал, но когда я вызвал open (), он был создан. понятно почему

1 голос
/ 08 ноября 2019

Вам не нужно повторно открывать файл, если вы еще не закрыли его после первоначального открытия. Используйте «a» при открытии файла, чтобы добавить к нему. Итак ... "иначе: с открытым (путь," а ") как f: f.write (строка)". Попробуйте это

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