Как получить путь к файлу для исполняемого файла Python
Я пытаюсь получить путь в Python для открытия и записи в текстовом документе с помощью уже существующего каталога путей C:\ProgramData\myFolder\doc.txt, не нужно его создавать, но заставьте его работать с исполняемым файлом Python на компьютере пользователя. Например, если таким образом я получил папку там:
mypath = os.path.join(os.getenv('programdata'), 'myFolder')
и тогда, если я хочу, напишите:
data = open (r'C:\ProgramData\myFolder\doc.txt', 'w')
или откройте его:
with open(r'C:\ProgramData\myFolder\doc.txt') as my_file:
Не уверен, что это правильно:
programPath = os.path.dirname(os.path.abspath(__file__))
dataPath = os.path.join(programPath, r'C:\ProgramData\myFolder\doc.txt')
и использовать его, например:
with open(dataPath) as my_file:
2 ответа
Решение
Я бы начал с выяснения стандартного места для размещения файла. В Windows хорошая переменная среды USERPROFILE - хорошее начало, а на компьютерах с Linux/Mac вы можете положиться на HOME.
from sys import platform
import os
if platform.startswith('linux') or platform == 'darwin':
# linux or mac
user_profile = os.environ['HOME']
elif platform == 'win32':
# windows
user_profile = os.environ['USERPROFILE']
else:
user_profile = os.path.abspath(os.path.dirname(__file__))
filename = os.path.join(user_profile, 'doc.txt')
with open(filename, 'w') as f:
# opening with the 'w' (write) option will create
# the file if it does not already exists
f.write('whatever you need to change about this file')
Для Python 3.x мы можем
import shutil
shutil.which("python")
Фактически, shutil.which может найти любой исполняемый файл, а не простоpython
.