La domanda, number 10501247, in StackOverflow fornisce una risposta su come creare un file temporaneo in Python.
Ho solo bisogno di avere un nome di file temporaneo nel mio caso.
La chiamata a tempfile.NamedTemporaryFile() restituisce l'handle del file dopo la creazione effettiva del file.
C'è modo di ottenere solo il nome del file?Generare nomi di file temporanei senza creare il file effettivo in Python
# Trying to get temp file path
tf = tempfile.NamedTemporaryFile()
temp_file_name = tf.name
tf.close()
# Here is my real purpose to get the temp_file_name
f = gzip.open(temp_file_name ,'wb')
...
'NamedTemporaryFile' garantisce un nome univoco, (probabilmente) provandolo e riprovando se esiste. Ottenere solo un nome non garantisce che puoi effettivamente creare il file in un secondo momento, ti stai aprendo alle condizioni di gara di qualcun altro che usa lo stesso nome prima di te. –
@Joachim Vero, qui c'è una condizione di gara e sarebbe preferibile evitarlo. Tuttavia, a volte è necessario passare un nome di file temporaneo a una funzione (il file aperto si verifica internamente.) Avere un nome ben casuale dà una probabilità molto migliore che la condizione della competizione sia un non-problema. Penso che sia necessario fornire un buon nomefile temporaneo per minimizzare la possibilità di un errore della condizione di competizione. Naturalmente aggiungendo un buon prefisso e suffisso basato sul processo in esecuzione e l'attività che viene eseguita fornirà ancora meno possibilità di collisione. – PolyMesh