Apakah ada cara lintas platform untuk mendapatkan jalur ke temp
direktori di Python 2.6?
Misalnya, di Linux yang akan /tmp
, sementara di bawah XP C:\Documents and settings\[user]\Application settings\Temp
.
Apakah ada cara lintas platform untuk mendapatkan jalur ke temp
direktori di Python 2.6?
Misalnya, di Linux yang akan /tmp
, sementara di bawah XP C:\Documents and settings\[user]\Application settings\Temp
.
Jawaban:
Itu akan menjadi modul tempfile .
Ini memiliki fungsi untuk mendapatkan direktori sementara, dan juga memiliki beberapa cara pintas untuk membuat file dan direktori sementara di dalamnya, baik bernama atau tidak disebutkan namanya.
Contoh:
Untuk kelengkapan, berikut cara mencari direktori sementara, sesuai dengan dokumentasi:
TMPDIR
variabel lingkungan.TEMP
variabel lingkungan.TMP
variabel lingkungan.Wimp$ScrapDir
variabel environment.C:\TEMP
,C:\TMP
,\TEMP
, dan\TMP
, dalam urutan itu./tmp
,/var/tmp
dan/usr/tmp
, dalam urutan itu.sumber
/var/folders/<garbage/here>
bukan/tmp
karena itu$TMPDIR
yang diatur. Lihat di sini .tempfile.gettempdir()
memutuskan untukC:\users\user\AppData\Local\Temp
. Sayangnya jalannya panjang.Ini harus melakukan apa yang Anda inginkan:
Bagi saya di kotak Windows saya, saya mendapatkan:
dan di kotak Linux saya saya dapatkan:
sumber
Saya menggunakan:
Ini karena pada MacOS, yaitu Darwin,
tempfile.gettempdir()
danos.getenv('TMPDIR')
mengembalikan nilai seperti'/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'
; itu salah satu yang tidak selalu saya inginkan.sumber
Cara paling sederhana, berdasarkan komentar dan jawaban @ nosklo :
Tetapi jika Anda ingin secara manual mengontrol pembuatan direktori:
Dengan begitu Anda dapat dengan mudah membersihkan diri sendiri setelah selesai (untuk privasi, sumber daya, keamanan, apa pun) dengan:
Ini mirip dengan apa yang dilakukan aplikasi seperti Google Chrome dan Linux
systemd
. Mereka hanya menggunakan hex hash yang lebih pendek dan awalan khusus aplikasi untuk "mengiklankan" keberadaan mereka.sumber
tempfile.mkdtemp()
bukannyamkdtemp()
Anda sarankan.