Невозможно открыть файл в режиме записи после копирования файла - PullRequest
0 голосов
/ 06 апреля 2020

Мне необходимо отредактировать только что созданный файл, используя copyFile().

Однако readlines() всегда терпит неудачу, если файл открывается в режиме 'w' или 'w+' или в 'a' mode.

copyfile(fileObj.file_to_open, fileObj._copyToFileName)
    with open(fileObj._copyToFileName, 'w') as thisFile:
        lines = thisFile.readlines()

Я могу readlines(), если перевести его в режим по умолчанию (режим чтения).

Почему проблема с открытием в режиме записи будет проблемой?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы ищете режим r+ или a+, который позволяет выполнять операции чтения и записи в файлы ( см. Подробнее ).

С r+, позиция изначально в начале, но чтение его один раз приведет к концу, что позволит вам добавить. При a+ позиция изначально находится в конце.

При f.seek(0) вы можете переместить позицию чтения в начало.

with open("filename", "r+") as f:
    text = f.read()    
    f.seek(0)
    # reread if required here
0 голосов
/ 06 апреля 2020

Когда вы открываете файл в режиме записи, Python усекает файл. Если вы хотите открыть файл для чтения / записи без этого, вам нужно использовать open(filename, 'r+').

Также убедитесь, что вы отслеживаете, где в файле находится курсор, потому что вы можете перезаписать свои данные , Для управления используйте file.seek(offset).

Проверьте документацию Python open для получения более подробной информации.

...