Создать пустой файл с помощью Python

python

321118 просмотра

2 ответа

Я хотел бы создать файл с путем, xиспользуя Python. Я использовал os.system(y)где y = 'touch %s' % (x). Я искал не-справочную версию os.mkdir, но я не смог ничего найти. Есть ли такой инструмент для создания файла, не открывая его, или используя system или popen / subprocess?

Автор: tkbx Источник Размещён: 12.11.2019 09:22

Ответы (2)


417 плюса

Решение

Нет способа создать файл, не открывая его. Существует os.mknod("newfile.txt")( но для этого требуются права суперпользователя в OSX ). Системный вызов для создания файла на самом деле open()с O_CREATфлагом. Так что как ни крути, вы всегда будете открывать файл.

Таким образом, самый простой способ просто создать файл без его усечения, если он существует:

open(x, 'a').close()

На самом деле вы могли бы опустить этот параметр, .close()так как повторный подсчет GC для CPython закроет его сразу же после завершения open()оператора, но делать это более четко явно и полагаться на поведение, специфичное для CPython, тоже нехорошо.

Если вам нужно touchповедение (то есть обновите mtime, если файл существует):

import os
def touch(path):
    with open(path, 'a'):
        os.utime(path, None)

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

basedir = os.path.dirname(path)
if not os.path.exists(basedir):
    os.makedirs(basedir)
Автор: ThiefMaster Размещён: 29.09.2012 05:25

42 плюса

Конечно, есть способ создавать файлы без открытия. Это так же просто, как звонить os.mknod("newfile.txt"). Единственным недостатком является то, что этот вызов требует привилегий root в OSX.

Автор: Bachsau Размещён: 02.08.2015 03:00
Вопросы из категории :
32x32