Создать пустой файл с помощью Python
321118 просмотра
2 ответа
Я хотел бы создать файл с путем, x
используя Python. Я использовал os.system(y)
где y = 'touch %s' % (x)
. Я искал не-справочную версию os.mkdir
, но я не смог ничего найти. Есть ли такой инструмент для создания файла, не открывая его, или используя system или popen / subprocess?
Ответы (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.
Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- python Вызов функции модуля с использованием его имени (строки)
- python Звук Питона («Колокол»)
- python Regex и unicode
- python Создать зашифрованный ZIP-файл в Python
- python Создайте базовый итератор Python
- python Функция транспонирования / распаковки (обратная сторона zip)?
- python Каков наилучший способ разбора аргументов командной строки?
- python Формат чисел в строки в Python
- python Как загрузить файл через HTTP с помощью Python?
- python Is there any difference between "foo is None" and "foo == None"?
- python Как запустить сценарий Python как службу в Windows?
- python Нахождение каких методов у объекта Python
- python Как отсортировать список строк?
- python Что ** (двойная звезда / звездочка) и * (звездочка / звездочка) делают для параметров?
- python What is the purpose of class methods?
- python Какой лучший способ вернуть несколько значений из функции в Python?