2016-12-07 4 views
0

Я пытаюсь получить путь в python, чтобы открыть и записать в текстовый документ уже существующий каталог путей C: \ ProgramData \ myFolder \ doc.txt, не нужно его создавать, но заставьте его работать с исполняемым файлом python на компьютере пользователя. Например, если таким образом я получил папку там:Как получить путь к файлу для исполняемого файла 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: 
+0

Я думаю, что вы хотите 'dataPath = os.path.join (programPath, r'myFolder \ doc.txt ')'? '__file__' будет вам путь к файлу скрипта py – Skycc

+0

@Skycc привет, я пробовал, но в этом случае он не пишет' data = open (dataPath, 'w') ', если я использую его таким образом, например, –

+0

непонятно на то, что вы хотите, я думаю, потому что там нет dir, dataPath = os.path.join (os.getenv ('programdata'), 'myFolder'); os.makedirs (dataPath); с open (os. path.join (dataPath, 'doc.txt'), 'w') как my_file: ' – Skycc

ответ

0

Я хотел бы начать с выяснения стандартного место, чтобы поместить файл. В 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') 
0
import os 
path = os.environ['HOMEPATH']