Python を使用してパスを持つファイルを作成したいと思います。 wherex
を使用しています。 の非ディレクトリ バージョンを探しましたが、何も見つかりません。ファイルを開かずに、または system や popen/subprocess を使用せずにファイルを作成するようなツールはありますか?os.system(y)
y = 'touch %s' % (x)
os.mkdir
ベストアンサー1
ファイルを開かずに作成する方法はありません。
ありますos.mknod("newfile.txt")
(ただし、OSX ではルート権限が必要です)。 ファイルを作成するためのシステム コールは、実際にはフラグopen()
付きですO_CREAT
。 そのため、方法に関係なく、常にファイルを開くことになります。
したがって、存在する場合にそれを切り捨てずに単純にファイルを作成する最も簡単な方法は次のとおりです。
open(x, 'a').close()
.close()
実際には、 CPython の参照カウント GC はステートメントの終了直後にそれを閉じるので省略できます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)