1. ホーム
  2. パイソン

[解決済み】pythonで空ファイルを作成する【重複あり

2022-03-29 06:21:34

質問

パスが設定されたファイルを作成したい x pythonを使用しています。私はこれまで os.system(y) ここで y = 'touch %s' % (x) . の非ディレクトリ版を探しました。 os.mkdir が、なかなか見つからない。このように、ファイルを開かずに、systemやpopen/subprocessを使って作成するツールはないのでしょうか?

解決方法は?

<ストライク ファイルを開かずに作成する方法はありません。 があります。 os.mknod("newfile.txt") ( が、OSX では root 権限が必要です ). ファイルを作成するためのシステムコールは、実際には 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)