경로를 얻는 크로스 플랫폼 방법이 있습니까? temp
Python 2.6 디렉토리 있습니까?
예를 들어, Linux에서는 /tmp
XP, XP에서는 C:\Documents and settings\[user]\Application settings\Temp
입니다.
답변
이것이 임시 파일 모듈입니다.
임시 디렉토리를 가져 오는 기능이 있으며 임시 파일과 디렉토리를 명명하거나 이름을 지정하지 않는 바로 가기도 있습니다.
예:
import tempfile
print tempfile.gettempdir() # prints the current temporary directory
f = tempfile.TemporaryFile()
f.write('something on temporaryfile')
f.seek(0) # return to beginning of file
print f.read() # reads data back from the file
f.close() # temporary file is automatically deleted here
완전성을 위해 다음은 설명서에 따라 임시 디렉토리를 검색하는 방법입니다.
TMPDIR
환경 변수에 의해 명명 된 디렉토리 .TEMP
환경 변수에 의해 명명 된 디렉토리 .TMP
환경 변수에 의해 명명 된 디렉토리 .- 플랫폼 별 위치 :
- 에 RiscOS 디렉토리에 의해 명명
Wimp$ScrapDir
환경 변수입니다. - 에 윈도우 , 디렉토리
C:\TEMP
,C:\TMP
,\TEMP
,와\TMP
, 그 순서이다. - 다른 모든 플랫폼, 디렉토리에
/tmp
,/var/tmp
그리고/usr/tmp
순서대로.
- 에 RiscOS 디렉토리에 의해 명명
- 최후의 수단으로 현재 작업 디렉토리.
답변
이것은 당신이 원하는 것을해야합니다 :
print tempfile.gettempdir()
내 Windows 상자에서 다음을 얻습니다.
c:\temp
그리고 내 리눅스 박스에서 나는 얻는다 :
/tmp
답변
나는 사용한다:
from pathlib import Path
import platform
import tempfile
tempdir = Path("/tmp" if platform.system() == "Darwin" else tempfile.gettempdir())
이는 맥 OS, 즉 다윈에, tempfile.gettempdir()
그리고 os.getenv('TMPDIR')
같은 값을 반환 '/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'
; 내가 항상 원하지 않는 것입니다.
답변
@nosklo의 의견과 답변을 기반으로하는 가장 간단한 방법 :
import tempfile
tmp = tempfile.mkdtemp()
그러나 디렉토리 작성을 수동으로 제어하려면 다음을 수행하십시오.
import os
from tempfile import gettempdir
tmp = os.path.join(gettempdir(), '.{}'.format(hash(os.times())))
os.makedirs(tmp)
그러면 개인 정보 보호, 리소스, 보안 등을 위해 다음과 같은 작업을 수행 한 후 쉽게 정리할 수 있습니다.
from shutil import rmtree
rmtree(tmp, ignore_errors=True)
이것은 Chrome 및 Linux와 같은 애플리케이션이하는 것과 유사합니다 systemd
. 그들은 짧은 16 진 해시와 앱별 접두사를 사용하여 자신의 존재를 “광고”합니다.