Прочитать и переписать файл в Python

Тип значения вашего словаря может быть списком или другим классом, который содержит несколько объектов. Что-то вроде

Dictionary<int, List<string>> 

для словаря, который вводится с помощью int и содержит список строк.

Основное внимание при выборе типа значения - это то, что вы будете использовать Словарь для, если вам придется выполнять поиск или другие операции над значениями, тогда, возможно, подумайте об использовании структуры данных, которая поможет вам делать то, что вы хотите - как HashSet.

94
задан compie 11 March 2010 в 10:01
поделиться

3 ответа

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

f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()

Функциональность также может быть чище и безопаснее , используя с open as на комментарий mVChr, который закроет обработчик, даже если произойдет ошибка.

with open(filename, 'r+') as f:
    text = f.read()
    text = re.sub('foobar', 'bar', text)
    f.seek(0)
    f.write(text)
    f.truncate()
166
ответ дан 24 November 2019 в 06:05
поделиться

Модуль fileinput имеет встроенный режим для записи изменений в файл, который вы обрабатываете, без использования временных файлов. и т. д. Модуль прекрасно инкапсулирует обычную операцию перебора строк в списке файлов с помощью объекта, который прозрачно отслеживает имя файла, номер строки и т. д., если вы хотите проверить их внутри цикла.

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    if "foobar" in line:
         line=line.replace("foobar","bar")
    print line
15
ответ дан 24 November 2019 в 06:05
поделиться

Возможно, было бы проще и аккуратнее закрыть файл после text = re.sub('foobar', 'bar', text), снова открыть его для записи (очистив старое содержимое) и записать в него обновленный текст.

15
ответ дан 24 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

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