2011-11-06 46 views
25

Come si dice a Python dove salvare un file di testo?Dire a Python di salvare un file .txt in una determinata directory su Windows e Mac

Ad esempio, il mio computer sta eseguendo il file Python dal desktop. Voglio che salvi tutto il file di testo nella mia cartella documenti, non sul mio desktop. Come faccio a farlo in uno script come questo?

name_of_file = raw_input("What is the name of the file: ") 
completeName = name_of_file + ".txt" 
#Alter this line in any shape or form it is up to you. 
file1 = open(completeName , "w") 

toFile = raw_input("Write what you want into the field") 

file1.write(toFile) 

file1.close() 

risposta

37

Basta usare un percorso assoluto quando si apre il filehandle per la scrittura.

import os.path 

save_path = 'C:/example/' 

name_of_file = raw_input("What is the name of the file: ") 

completeName = os.path.join(save_path, name_of_file+".txt")   

file1 = open(completeName, "w") 

toFile = raw_input("Write what you want into the field") 

file1.write(toFile) 

file1.close() 

Si potrebbe eventualmente combinare questo con os.path.abspath() come descritto nella risposta di Bryan per ottenere automaticamente il percorso della cartella Documenti di un utente. Saluti!

+0

Grazie per l'aiuto – user1031493

16

Usa os.path.join di coniugare il percorso della directory Documents con il completeName (nome del file?) Fornito dall'utente.

import os 
with open(os.path.join('/path/to/Documents',completeName), "w") as file1: 
    toFile = raw_input("Write what you want into the field") 
    file1.write(toFile) 

Se si desidera che la directory Documents di essere relativo alla directory home dell'utente, si potrebbe usare qualcosa come:

os.path.join(os.path.expanduser('~'),'Documents',completeName) 

Altri hanno proposto di utilizzare os.path.abspath. Si noti che os.path.abspath non risolve '~' nella directory home dell'utente:

In [10]: cd /tmp 
/tmp 

In [11]: os.path.abspath("~") 
Out[11]: '/tmp/~' 
Problemi correlati