Crea un archivo vacío usando python

Me gustaría crear un archivo con la ruta x usando python. He estado usando os.system(y) donde y = 'touch %s' % (x) . He buscado una versión que no sea de directorio de os.mkdir , pero no he podido encontrar nada. ¿Existe una herramienta como esta para crear un archivo sin abrirlo o usar el sistema o popen / subprocess?

No hay forma de crear un archivo sin abrirlo. Existe os.mknod("newfile.txt") ( pero requiere privilegios de root en OSX ). La llamada del sistema para crear un archivo está realmente open() con el indicador O_CREAT . Así que no importa cómo, siempre abrirás el archivo.

Entonces, la forma más sencilla de crear un archivo sin truncarlo en caso de que exista es esta:

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

En realidad, podría omitir el .close() ya que el GC de CPython de recontación lo cerrará inmediatamente después de que finalice la instrucción open() , pero es más limpio hacerlo explícitamente y confiar en el comportamiento específico de CPython tampoco es bueno.

En caso de que desee el comportamiento del touch (es decir, actualice el mtime en caso de que exista el archivo):

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

Podría extender esto para crear también cualquier directorio en la ruta que no existe:

 basedir = os.path.dirname(path) if not os.path.exists(basedir): os.makedirs(basedir) 

Por supuesto, hay una manera de crear archivos sin abrir. Es tan fácil como llamar a os.mknod("newfile.txt") . El único inconveniente es que esta llamada requiere privilegios de root en OSX.