2011-12-20 2 views
21

나는 파일의 경로를 참조하는이 기능을 가지고 :파이썬에서 tmp 파일을 생성

FILE_PATH 파일의 경로, 즉 'H의 문자열입니다
some_obj.file_name(FILE_PATH) 

: /path/FILE_NAME.ext를 '

내가 문자열의 내용을 내 파이썬 스크립트 내부의 파일 FILE_NAME.ext을 만들려면 :

some_string = 'this is some content' 

어떻게 이것에 대해 이동? 파이썬 스크립트는 리눅스 박스 안에 있습니다. 나는 내가 사용해야한다고 생각한다.

import tempfile 
import os 
import sys 
os.getcwd() 

또는 그 선상의 무엇인가. 감사!

+0

는'os.touch (FNAME)를'사용합니다. – khachik

+0

그러면 왜 임시 파일이 필요합니까? – plaes

+0

오브젝트의 FILE_PATH를 호출하는 함수가 있습니다. – SuperString

답변

24

이 파이썬에 대한 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.fdopen 파이썬 파일 객체의 파일 기술자를 래핑, 때 자동으로 with을 닫고 종료 : 그것을 처리하는 더 좋은 방법은 (링크에서 가져온로) 다음 코드이다. os.remove을 호출하면 더 이상 필요없는 파일이 삭제됩니다.

+0

'mkstemp'의 두 번째 매개 변수는 파일 이름입니다. 나는 이것이 두 사람에게 중요 할 수도 있다고 생각합니다. 언급 해 주시겠습니까? –

+0

@MartinThoma : Hm, docs (https://docs.python.org/3/library/tempfile.html#tempfile.mkstemp)는 달리 말합니다 :'mkstemp'의 매개 변수는'prefix','suffix', dir'과'text'를 사용합니다. 물론, 그것들은 모두 최종 파일 이름에 영향을 미치지 만 실제로 완전한 파일 이름을 지정하는 것은 불가능합니다. – Constantinius

+0

@ Constantinus : 죄송합니다. 매개 변수를 쓰지 않고 값을 쓰고 싶지 않았습니다. –

62

난 당신이 찾고있는 생각 : http://docs.python.org/library/tempfile.html이 그것을 닫습니다 'w'를 오픈

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

이것은 Google이 SuperString의 특별한 문제가 아니라 문제의 주제를 바탕으로 한 좋은 대답입니다. –

+0

duckduckgo에서 첫 번째 : D – ZiTAL

관련 문제