Telling Python to save a .txt file to a certain directory on Windows and Mac

Python

Python Problem Overview


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

Python Solutions


Solution 1 - Python

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!

Solution 2 - Python

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/~'

Solution 3 - Python

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

Python 3 release note

Solution 4 - Python

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

Solution 5 - Python

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!

Solution 6 - Python

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

         

Solution 7 - Python

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

Solution 8 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1031493View Question on Stackoverflow
Solution 1 - PythonAcornView Answer on Stackoverflow
Solution 2 - PythonunutbuView Answer on Stackoverflow
Solution 3 - Pythonder_radlerView Answer on Stackoverflow
Solution 4 - PythonPaul ThomasView Answer on Stackoverflow
Solution 5 - PythonAsherView Answer on Stackoverflow
Solution 6 - PythongavstarView Answer on Stackoverflow
Solution 7 - PythonParminder ReehalView Answer on Stackoverflow
Solution 8 - PythonAlex PashkovView Answer on Stackoverflow