2011-11-06 22 views
25

¿Cómo le dice a Python dónde guardar un archivo de texto?Indicando a Python que guarde un archivo .txt en un directorio determinado en Windows y Mac

Por ejemplo, mi computadora ejecuta el archivo Python fuera de mi escritorio. Quiero que guarde todo el archivo de texto en la carpeta de mis documentos, no en mi escritorio. ¿Cómo hago eso en un script como este?

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() 

Respuesta

37

Simplemente use una ruta absoluta al abrir el identificador de archivo para escribir.

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() 

Se puede combinar opcionalmente con esta os.path.abspath() como se describe en la respuesta de Bryan para obtener automáticamente la ruta de la carpeta de documentos del usuario. ¡Aclamaciones!

+0

Gracias por la ayuda – user1031493

16

Utilice os.path.join para combinar la ruta al directorio Documents con el completeName (nombre de archivo?) Proporcionado por el usuario.

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) 

Si desea que el directorio de Documents que es relativo al directorio principal del usuario, podría utilizar algo como:

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

Otros han propuesto la utilización de os.path.abspath. Tenga en cuenta que os.path.abspath no resuelve '~' al directorio de inicio del usuario:

In [10]: cd /tmp 
/tmp 

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