Запись пустой строки в текстовый файл на Python - PullRequest
2 голосов
/ 13 октября 2010

Довольно неловкая проблема, хотя я пришел из веб-разработки и редко сталкиваюсь с файлами ввода / вывода.

Я написал простое средство обновления конфигурации для использования на моем общем хостинге.Он просматривает каталог на наличие подкаталогов, а затем записывает строки конфигурации в файл - по одной строке для каждого подкаталога.Проблема в том, что когда он обнаруживает, что есть строки конфигурации, но нет подкаталогов, он должен оставить конфигурацию пустой - что не работает!Приходите сюда с этим, потому что документы не упоминают об этом, и Google тоже не помогает.Его Python 2.6.6 на Debian Lenny.

file = open('path', 'r+')
config = file.read()
## all the code inbetween works fine
## config is .split()-ed, hence the list
if config == ['']:
    config = ''
file.write(config)
file.close()

В этом случае файл вообще не изменяется.Самое смешное, заставить его забыть о конфигурации и просто выполнить file.write ('') тоже не очищает файл, но ставит \ n в кажущееся случайным положение строки.

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Вы используете r+ режим чтения-записи. Все чтения и все записи обновляют позицию файла.

Попробуйте:

file = open('path', 'r+')
config = file.read()
## all the code inbetween works fine
## config is .split()-ed, hence the list
if config == ['']:
    config = ''
file.seek(0)    # rewind the file
file.write(config)
file.close()
2 голосов
/ 13 октября 2010

Если вы пытаетесь очистить файл, используйте усечение :

f.truncate(0)
f.close()
2 голосов
/ 13 октября 2010

Возможно, вы захотите использовать режим 'w+' в вызове open, чтобы усечь файл.

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