2013-02-20 20 views
6

Pythonを見て、必要なファイルがあるかどうか、作成していない場合はどうすればいいですか?Pythonでファイルが存在するかどうかをチェックし、存在しない場合は作成する方法

基本的に私はファイル名KEEP-IMPORTANT.txtを探してもらいたいですが、py2appを使って自分のアプリケーションを作成すると、ファイルがないので機能しません。私が試してみると、それは動作しません(私は思うので、Pythonはそれを生成する必要があります)。

ファイルが存在するかどうかをPythonがチェックして、そうであればファイルを生成しません。

+0

ファイルで何をしますか?それを上書きする?それを読んで?それに追加しますか?どちらも? –

+2

"私はファイルを作ってみるとうまくいきません。(私はPythonがそれを生成しなければならないと考えています)。"ほとんどそう。詳細を追加し、関連するコードを表示する必要があります。 –

+0

ファイルがすべて存在する必要があります – user2093174

答えて

7

Similar question

これが最善の方法である:

try: 
    with open(filename) as file: 
     # do whatever 
except IOError: 
    # generate the file 

(os.path.existsもあります)が、これはセキュリティ上の懸念することができます。

+0

この方法で脆弱性をテストする例を考案しました。 Python 2.7のパーミッションエラーでIOErrorが発生します。私はテストファイルの読み取りアクセスを取り消しましたが、書き込みを許可しました。ファイルを読み込もうとするとIOErrorが生成され、この例外を使用して上書きすることができました。これはPython 3では動作しません。ファイルを読むとPermissionErrorが生成されます。これはおそらく起きにくいニッチなシナリオでしょう。 IOErrorが既存のファイルでどのように発生する可能性があるのだろうか。 – Octipi

+0

ファイルに対するrw権限を持っていない場合、それを壊さないようにするだけで別のIOErrorが発生しますか? –

+0

Python 3では、PermissionErrorが発生します。私はあなたが書き込み権限を持っていて読み取り権限は持っていなかったと思われるシナリオをテストしました。この場合、Python 2.7の場合、ファイルを読み取るとIOErrorが発生しましたが、まだ書き込み権限で書き込むことができます。 – Octipi

7

この1ライナーはファイルが存在するかどうかを確認し、存在しない場合は作成します。

open("KEEP-IMPORTANT.txt", "a") 
+0

+1はファイルを作成し、エラーはありませんが、ファイルの前のビットを削除するのはどうですか? – cutrightjm

関連する問題