2017-03-28 11 views
-5

空のファイルをPythonで作成したいと思います。私が得たPythonで空のファイルを作成する方法

gdsfile = "/home/hha/temp.gds" 
if not (os.path.isfile(gdsfile)): 
    os.system(touch gdsfile) 

エラー: ファイル「/home/hha/bin/test.py」、ラインしかし、私は難し作成one..Belowは、私が作成するために使用されるPythonのコードですが、それは私にエラーを与えてい29 os.system(タッチgdsfile) ^ にSyntaxError:無効な構文

しかし、コマンドラインから、私が使用して新しいファイルを作成することができています:タッチ

はあなたの助け ハワード

いただき、誠にありがとうございます
+3

'os.system 'の引数は文字列である必要があります。それはあなたが今通過していることではありません。また、Python独自の 'open'メソッドを使うことができるときに' touch'コマンドを呼び出す理由はありません。 – larsks

答えて

5

最初に、os.system()に文字列引数が必要で、あなたがそれを提供していないため、構文エラーがあります。文字列を構築し、os.system()に渡し

os.system('touch {}'.format(gdsfile)) 

:これはあなたのコードを修正します。

しかし、(パイソン> = 3.3)より良い方法は、単純にopen()組み込みを使用してファイルを開くには、次のとおりです。

gdsfile = "/home/hha/temp.gds" 
try: 
    open(gdsfile, 'x') 
except FileExistsError: 
    pass 

これは排他的な創造を意味しているモードxを指定する - 操作がすでにファイルの場合に失敗します。存在していなければ作成します。

os.path.isfile()を使用する場合よりも安全です。チェックと作成の間の別のプロセスによってファイルが作成される可能性がある競合状態を避けるため、open()です。


あなたは、Python 2、またはPythonの3の以前のバージョンを使用している場合は、排他フラグを使用してファイルを開くためにos.open()を使用することができます。

import os 
import errno 

gdsfile = "/home/hha/temp.gds" 
try: 
    os.close(os.open(gdsfile, os.O_CREAT|os.O_EXCL)) 
except OSError as exc: 
    if exc.errno != errno.EEXIST: 
     raise 
+0

'open'の前に 'with'を追加すると、返されたファイルハンドルが自動的にクリーンアップされます。 'with open(gdsfile、' x ')touched_file:pass' – Gino

関連する問題