How do you tell Python where to save a text file?

For example, my computer is running the Python file off my desktop. I want it to save all the text file in my documents folder, not on my desktop. How do I do that in a script like this?

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

8 Answers

Just use an absolute path when opening the filehandle for writing.

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

You could optionally combine this with os.path.abspath() as described in Bryan's answer to automatically get the path of a user's Documents folder. Cheers!

0

Use os.path.join to combine the path to the Documents directory with the completeName (filename?) supplied by the user.

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) 

If you want the Documents directory to be relative to the user's home directory, you could use something like:

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

Others have proposed using os.path.abspath. Note that os.path.abspath does not resolve '~' to the user's home directory:

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

A small update to this. raw_input() is renamed as input() in Python 3.

Python 3 release note

Another simple way without using import OS is,

outFileName="F:\\folder\\folder\\filename.txt" outFile=open(outFileName, "w") outFile.write("""Hello my name is ABCD""") outFile.close() 

If you want to save a file to a particular DIRECTORY and FILENAME here is some simple example. It also checks to see if the directory has or has not been created.

import os.path directory = './html/' filename = "file.html" file_path = os.path.join(directory, filename) if not os.path.isdir(directory): os.mkdir(directory) file = open(file_path, "w") file.write(html) file.close() 

Hope this helps you!

Using an absolute or relative string as the filename.

name_of_file = input("What is the name of the file: ") completeName = '/home/user/Documents'+ name_of_file + ".txt" file1 = open(completeName , "w") toFile = input("Write what you want into the field") file1.write(toFile) file1.close() 
1

Just give your desired path if file does not exist earlier;

 from os.path import abspath with open ('C:\\Users\\Admin\\Desktop\\results.txt', mode = 'w') as final1: print(final1.write('This is my new file.')) print(f'Text has been processed and saved at {abspath(final1.name)}') 

Output will be:

Text has been processed and saved at C:\Users\Admin\Desktop\results.txt 

If you want save file or another some in folder you can use shutil module from base python library.

import shutil path_to_file = f'home/user/My_Project/media/{my_file_name}' path_to_folder = 'home/user/my_folder/' shutil.copy(path_to_file, path_to_folder) 

You can do it ever for some file's list or in Django querysets:

from images.models import Image import shutil images = Image.objects.all() for image in images: image_path = image.file.path shutil.copy(image_path, path_to folder) 

All your choised files will put in directed folder.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy