Как получить путь к файлу для исполняемого файла 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')
import os
path = os.environ['HOMEPATH']

Для Python 3.x мы можем

import shutil
shutil.which("python")

Фактически, shutil.which может найти любой исполняемый файл, а не простоpython.

Другие вопросы по тегам