- Как назначить питону место сохранения файлов
- Самый простой вариант — не самый верный!
- Указываем путь к файлу правильно!
- А почему не os.path.join?
- Как сохранять текстовые файлы Python в определённую папку?
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками python или задайте свой вопрос.
- Путь сохранения по умолчанию для Python IDLE?
- 9 ответов
- Creating and saving files in a new directory in Python
- Error when specifying a non-existent directory with open()(FileNotFoundError)
- Create a directory(os.makedirs())
- Example code to create a new file with a destination
Как назначить питону место сохранения файлов
Для решения задач, связанных с редактированием или чтением файла, необходимо сообщить интерпретатору Python имя нужного нам файла, а также адрес, по которому этот файл располагается. Существуют разные способы указания пути к файлу в Python: от самого простого, до самого правильного. Давайте выясним, чем эти варианты отличаются и почему простой вариант не годится на роль лучшего!
Самый простой вариант — не самый верный!
Внимание! У этого способа обнаружен недостаток!
Самый простой вариант задания пути выглядит как последовательность директорий, в которых находится файл, с именем самого файла, разделенные знаками слеша:
Пример относительного пути:
Где вместо «Files» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.
Пример абсолютного пути:
Где вместо «C:\Python\pythonw.exe\Files\info.txt», «home/my_comp/Files/» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.
Этот вариант рабочий, однако, один существенный недостаток лишил его внимания разработчиков. Проблема заключается в том, что заданные таким способом пути адаптированы только к одному виду операционной системы: к Линукс, либо к Windows, так как в Windows используются обратные слеши «\», а в Линукс — обычные «/». Из-за этого скрипт, показывавший отличные результаты в Windows, начнет жаловаться на отсутствие файлов по прописанному пути в Linux, и наоборот. А с абсолютным путем вообще все сложно: никакого диска «C:» в Линуксе нет. Скрипт опять будет ругаться! Что же делать? Правильно указать путь к файлу!
Указываем путь к файлу правильно!
Внимание! Годный вариант!
Python — умный змей, поэтому в его арсенале, начиная с 3.4 версии появился модуль pathlib, который позволяет вытворять самые приятные вещи с путями к файлу, стоит только импортировать его класс Path:
Кстати, если у вас не установлен модуль pathlib, это легко исправить с помощью команды:
Задаем относительный путь с помощью Path!
После того, как класс импортирован, мы получаем власть над слешами! Теперь вопрос о прямых и обратных слешах в разных операционных системах ложится на плечи Path. Используя Path, вы можете корректно задать относительный путь, который будет работать в разных системах.
Например, в случае расположения файлов, как на представленном изображении, относительный путь, определяемый в скрипте «main_script.py», сформируется автоматически из перечисленных в скобках составных частей. Pathlib инициализирует новый объект класса Path, содержимым которого станет сформированный для Вашей системы относительный путь (в Windows части пути будут разделены обратными слешами, в Linux — обычными):
Задаем абсолютный путь с помощью Path
- cwd() — возвращает путь к рабочей директории
- home() — возвращает путь к домашней директории
Полученную строку, содержащую путь к рабочей или домашней директории, объединим с недостающими участками пути при инициализации объекта класса Path :
Пример 1: с использованием функции cwd():
В данном случае путь к директории имеет вид: dir_path = «/home/my_comp/python», а полный путь к файлу «docs.txt» будет иметь вид: «/home/my_comp/python/files/info/docs.txt».
Представленный выше код можно оптимизировать и записать в одну строку:
Пример2: с использованием функции home():
В данном случае путь к директории имеет вид: dir_path = «/home/my_comp», а полный путь к файлу ‘docs.txt’ будет иметь вид: «/home/my_comp/files/info/docs.txt».
Сократим представленный выше код:
А почему не os.path.join?
А что же не так с заслуженным мастером по объединению путей os.path.join() и хранителем секретной информации о расположении рабочей директории os.getcwd()? Действительно, эти замечательные функции в составе модуля os довольно долго служили разработчикам Python верой и правдой. Их вполне можно использовать для определения пути к файлу. Однако, большим недостатком функции join() является невозможность принять для объединения более двух аргументов. Таким образом, чтобы присоединить к рабочей директории путь вида: ‘files/info/docs.txt’, приходится трижды обращаться к функции join(), не забывая при этом искусно жонглировать скобками. Выглядит это примерно так:
Казалось бы, ничего сложного. Однако, зачем громоздить лишние скобки, когда есть более лаконичный вариант с использованием модуля pathlib?
Подведем итог: начиная с версии Python 3.4, для задания пути к файлу рекомендуется использовать модуль pathlib с классом Path. Определить путь к рабочей директории можно с помощью функции cwd(), а путь к домашней директории подскажет функция home().
Как сохранять текстовые файлы Python в определённую папку?
Начал изучать Python по книге Abyteofpython там была задача сделать телефонную книгу, решил дополнить её так, что бы он сохранял текстовый документ в определённую папку. Может какие библиотеки есть для этого?
Вся магия, просто указываете полный путь до папки.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками python или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Путь сохранения по умолчанию для Python IDLE?
кто-нибудь знает, где и как установить путь/каталог по умолчанию для сохранения скриптов python перед запуском?
на Mac он хочет сохранить их на верхнем уровне
/Documents directory . Я хотел бы указать реальное местоположение. Есть идеи?
9 ответов
на OS X, если вы запустите IDLE.app (двойным щелчком мыши или с помощью open(1) , например), каталог по умолчанию подключается к
/Documents . Если вы хотите изменить значение по умолчанию навсегда, вам нужно отредактировать файл idlemain.py в режиме ожидания.App application bundle; в зависимости от того, какой Python(ы) вы установили, он, вероятно, будет в одном из:
С другой стороны, если вы запускаете IDLE из командной строки, например, с:
IDLE будет использовать этот текущий каталог по умолчанию.
похоже, вы можете простоя в каталог, который вы хотите, если вы запустите любой модуль из этого каталога.
Я ранее пытался открыть idlemain.py через браузер путей. Я смог открыть и отредактировать файл, но казалось, что я не смог сохранить свои изменения.
Я просто рад слышать, что у других людей есть эта проблема. Я просто думала, что веду себя глупо.
Я на самом деле только что обнаружил самый простой ответ, если вы используете ссылку ярлыка с надписью «IDLE (Python GUI)». Это в Windows Vista, поэтому я не знаю, будет ли он работать в других ОС.
1) Щелкните правой кнопкой «свойства».
3) В «В», укажите путь к файлу (например, «C:\Users. «).
позвольте мне знать, если это работает!
Если вы открываете модуль, который устанавливает рабочий каталог по умолчанию.
File — > Open, чтобы открыть файл. И установите текущий рабочий каталог.
в Windows (Vista, по крайней мере, то, что я смотрю здесь), ярлыки на рабочем столе имеют поле «Пуск В», где вы можете установить каталог, используемый в качестве текущего рабочего каталога при запуске программы. Изменение этого работает для меня. Что-нибудь подобное на Mac? (Запуск в нужном каталоге из командной строки тоже работает.)
откройте новое окно finder, затем перейдите к приложениям. Найдите приложение Python. (Для моего mac это Python 3.5)
дважды щелкните по нему. Щелкните правой кнопкой мыши на значке IDLE, покажите содержимое пакета. Затем перейдите в папку contents, затем resources.
(Примечание: Вы должны быть администратором или иметь пароль администратора для ниже)
право нажмите на кнопку idlemain.py получить информацию.
прокрутите весь путь вниз. Убедитесь, что на вкладке » общий доступ и разрешения «ваше»имя» (Me) находится на нем с привилегией «чтение и запись». Если не нажать на символ блокировки и разблокировать его. Затем добавьте / отредактируйте себя, чтобы иметь привилегию чтения и записи.
наконец,согласно инструкциям Неда Дейли, отредактируйте строку:
с желаемым путем, а затем сохраните изменения.
при перезапуске Python IDLE вы должны найти, что по умолчанию Сохранить как путь, который вы указали.
Если вы найдете каталог idlelib в вашей установке Python, у него будет несколько файлов с .расширение def. config-main.def имеет инструкции о том, куда поместить пользовательские файлы конфигурации. Однако, просматривая их, я не нашел настраиваемых путей (ваша установка может отличаться). Похоже, вам может понадобиться взломать код редактора, чтобы изменить его.
в моем случае каталог по умолчанию установлен в каталог, из которого я запустил IDLE. Например, если я запустил IDLE из каталога с именем » tmp » в моем домашнем каталоге, путь сохранения по умолчанию установлен в
/tmp . Так что начните свой простоя так:
Я использую windows 7 и, перейдя в Start — > IDLE (Python 3.6 32-бит)
нажмите на свойства, а затем на вкладке Ярлык перейдите к Начните и введите желаемый путь работал для меня обратите внимание, если простоя открыт и работает в то время как вы делаете это, вам придется закрыть его и перезапустить его для этого работать
Creating and saving files in a new directory in Python
The following sections explain how to create and save a new file in Python using a new directory (folder) as the destination.
- Error when specifying a non-existent directory with open() ( FileNotFoundError )
- os.makedirs() Create a directory
- Example code to create a new file with a destination
The following is an example of a text file.
When storing images, it depends on the library whether you can specify a path that includes a non-existent directory (or whether it will automatically create one if it does not exist).
FileNotFoundError If this error occurs, you can create a new directory with os.madeirs() before executing the function to save, as in the following example.
Error when specifying a non-existent directory with open()(FileNotFoundError)
When creating a new file with the built-in function open(), an error occurs if a path containing a new directory (a directory that does not exist) is specified as the first argument as the destination. ( FileNotFoundError )
open('not_exist_dir/new_file.txt', 'w') # FileNotFoundError
The first argument of open() can be an absolute path or a path relative to the current directory.
For the basic usage of open(), such as creating a new file in an existing directory, or overwriting or appending to an existing file, refer to the following article.
Create a directory(os.makedirs())
When creating a new file in a non-existent directory, it is necessary to create the directory before open().
If you are using Python 3.2 or later, it is convenient to use os.makedirs() with the argument exist_ok=True. Even if the target directory already exists, no error will occur and the directory can be created at once.
import os os.makedirs(new_dir_path, exist_ok=True)
If you have an older version of Python and do not have the argument exist_ok in os.makedirs(), you will get an error if you specify the path to a directory that exists, so use os.path.exists() to check for the existence of the directory first.
if not os.path.exists(new_dir_path): os.makedirs(new_dir_path)
See the following article for details.
Example code to create a new file with a destination
The following is a code example of a function that creates and saves a new file by specifying the destination directory.
The first argument dir_path is the path of the destination directory, the second argument filename is the name of the new file to be created, and the third argument file_content is the content to be written, each specified as a string.
If the specified directory does not exist, create a new one.
import os def save_file_at_dir(dir_path, filename, file_content, mode='w'): os.makedirs(dir_path, exist_ok=True) with open(os.path.join(dir_path, filename), mode) as f: f.write(file_content)
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
In this case, the file new_file.txt with the content “new text” will be created in new_dir\sub_dir. In other words, the following file will be newly created. new_dir/sub_dir/new_file.txt
Concatenating directory and file names with os.path.join().
Also, the mode of open() is specified as an argument. For text files, the default ‘w’ is fine, but if you want to create a binary file, set mode=’wb’.