Pythonic способ перемещения временных файлов - PullRequest
0 голосов
/ 18 сентября 2018

Из того, что я собрал, open() в действительности io.open(), "обертка" высокого уровня для os.open().Для других файловых операций, таких как переименование и удаление файлов, я должен использовать os функции, такие как os.remove и os.rename файл или даже shutil.move, в некоторых случаях, как показано ниже:

import shutil
with open("/tmp/workfile", "w") as f:
  f.write("some stuff")

shutil.move(f.name, "finalfile")

Почемунет такой оболочки, как open для удаления / переименования?

Есть ли лучший, возможно, более питонский способ выполнения вышеупомянутой задачи?

Кажется странным, что приходится импортировать, а не переименовыватьи удалите методы be в f, укажите его в другом файле.Особенно, когда open() не требует импорта.

edit: я удалил del f в конце, который, казалось, раздражал многих людей.Я знаю, что это не нужно.У меня было это, чтобы подчеркнуть, что f -объект, который больше не указывает на удаленный файл, имеет очень мало смысла.

1 Ответ

0 голосов
/ 18 сентября 2018

@ micke, хочешь поспорить, это связано с историей?Я предполагаю, что функция open была одной из первых, добавленных в Python, потому что, ну ... создатель языка нуждался в этом очень рано.

Я бы сказал, что open каквстроенная функция странная, а не наоборот.

Также обратите внимание, что вы используете переменную f вне блока with.И блок with автоматически вызывает close на f при выходе из блока, поэтому оператор del f не требуется.В этом весь смысл использования with блоков (забывание .close() - очень распространенная ошибка)

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