2011-12-20 22 views
21

私は、ファイルのパスを参照して、この機能を持っている:Pythonでtmpファイルを作成

FILE_PATHは、ファイルのパスの文字列、すなわち「Hである
some_obj.file_name(FILE_PATH) 

:/path/FILE_NAME.extを「

私は、文字列の内容と私のPythonスクリプト内のファイルfile_name.extをを作成したい:

some_string = 'this is some content' 

これについて移動する方法は? PythonスクリプトはLinuxのボックスの中に置かれます。私は使用する必要があると思います。

import tempfile 
import os 
import sys 
os.getcwd() 

またはそれらの行に沿ったものです。ありがとう!

+0

を開きます。 – khachik

+0

なぜ一時ファイルが必要ですか? – plaes

+0

オブジェクトのFILE_PATHを呼び出す関数があります。 – SuperString

答えて

24

ありPython用tempfile moduleがあるが、単純なファイルの作成にもトリックを行いますと

new_file.write('this is some content') 

new_file = open("path/to/FILE_NAME.ext", "w") 

を今、あなたはwriteメソッドを使用して、それに書き込むことができますtempfileモジュールは次のようになります。

import tempfile 

new_file, filename = tempfile.mkstemp() 

print(filename) 

os.write(new_file, "this is some content") 
os.close(new_file) 

mkstempを入力すると、ファイルを削除した後でファイルを削除する責任があります。他の引数を使用すると、ファイルのディレクトリと名前に影響を与えることができます。合法Emmet Speerによって指摘


UPDATE

としてクライアントコードが作成されたファイルをクリーンアップ/クローズする責任があるとして、mkstempを使用した場合、security considerationsがあります。それを処理するためのより良い方法は、次のスニペット(リンクから撮影したもの)である:

import os 

fd, path = tempfile.mkstemp() 
try: 
    with os.fdopen(fd, 'w') as tmp: 
     # do stuff with temp file 
     tmp.write('stuff') 
finally: 
    os.remove(path) 

os.fdopenwith終了自動的に閉じPythonのファイルオブジェクト内のファイル記述子をラップします。 os.removeを呼び出すと、不要になったときにファイルが削除されます。

+0

'mkstemp'の2番目のパラメータはファイル名です。私はそれが二人の人にとっては重要かもしれないと思います。あなたはそれを言いたいですか? –

+0

@MartinThoma:Hm、docs(https://docs.python.org/3/library/tempfile.html#tempfile.mkstemp)は、そうでないと言っています: 'mkstemp'のパラメータは' prefix'、 'suffix'、 「dir」と「text」です。確かに、それらはすべて最終的なファイル名に影響しますが、実際に完全なファイル名を指定することはできません。 – Constantinius

+0

@ Constantinus:おっと、申し訳ありませんが、パラメータを書いて値を返すことはしませんでした。 –

62

私はあなたがこのために探していると思う: `os.touch(fnameのを)`を使用、それを閉じ 'W' とhttp://docs.python.org/library/tempfile.html

import tempfile 
f = tempfile.NamedTemporaryFile(delete=False) 
f.close() 
f.name 
+2

これは、Googleの注目すべき問題のテーマに基づいて、良い答えではなく、SuperStringの特定の問題 –

+0

duckduckgoは最初のものです:D – ZiTAL

関連する問題