Указание Python сохранить текстовый файл в определенный каталог в Windows и Mac

#python

#python

Вопрос:

Как сообщить Python, где сохранить текстовый файл?

Например, мой компьютер запускает файл Python с моего рабочего стола. Я хочу, чтобы он сохранил весь текстовый файл в папке «Мои документы», а не на моем рабочем столе. Как мне сделать это в подобном сценарии?

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

Ответ №1:

Просто используйте абсолютный путь при открытии дескриптора файла для записи.

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

Вы могли бы дополнительно объединить это с os.path.abspath() , как описано в ответе Брайана, чтобы автоматически получить путь к папке документов пользователя. Приветствия!

Ответ №2:

Используйте os.path.join, чтобы объединить путь к Documents каталогу с completeName (именем файла?), указанным пользователем.

 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)
  

Если вы хотите, чтобы Documents каталог был относительно домашнего каталога пользователя, вы могли бы использовать что-то вроде:

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

Другие предлагали использовать os.path.abspath . Обратите внимание, что это os.path.abspath не разрешается '~' для домашнего каталога пользователя:

 In [10]: cd /tmp
/tmp

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

Ответ №3:

Небольшое обновление для этого. raw_input() переименован как input() в Python 3.

Примечание к выпуску Python 3

Ответ №4:

Другой простой способ без использования import OS — это,

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

Ответ №5:

Если вы хотите сохранить файл в определенный КАТАЛОГ с ИМЕНЕМ файла, вот несколько простых примеров. Он также проверяет, был ли создан каталог или нет.

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

Надеюсь, это поможет вам!

Ответ №6:

Использование абсолютной или относительной строки в качестве имени файла.

 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. Добро пожаловать в Stack Overflow! Вероятно, вы могли бы просто показать строку кода, в которой вы назначаете путь к файлу completeName, просто чтобы сделать ваше изменение / решение немного понятнее.

Ответ №7:

Просто укажите желаемый путь, если файл не существует ранее;

         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)}')
  

Вывод будет:

 Text has been processed and saved at C:UsersAdminDesktopresults.txt
  

Ответ №8:

Если вы хотите сохранить файл или другой файл в папке, вы можете использовать shutil модуль из базовой библиотеки python.

 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)
  

Вы можете сделать это когда угодно для списка некоторых файлов или в наборах запросов Django:

 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)
   
  

Все выбранные вами файлы будут помещены в указанную папку.