<질문>
HOME (linux) 또는 USERPROFILE (windows) 환경 변수를 변경하고 python 스크립트를 실행하면 시도했을 때 사용자 홈으로 새 값을 반환하는 것을 볼 수 있습니다. os.environ [ 'HOME'] os.exp
환경 변수에 의존하지 않고 실제 사용자 홈 디렉토리를 찾을 수있는 방법이 있습니까?
편집 : 다음은 레지스트리를 읽어 Windows에서 userhome을 찾는 방법입니다. http://mail.python.org/pipermail/python-win32/2008-January/006677.html
편집 : pywin32를 사용하여 Windows 집을 찾는 한 가지 방법,
from win32com.shell import shell,shellcon
home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0)
<답변1>
os.path.expanduser (path)가 도움이 될 수 있다고 생각합니다.
Unix 및 Windows에서는 ~ 또는 ~ user의 초기 구성 요소가 해당 사용자의 홈 디렉토리로 대체 된 인수를 반환합니다. Unix에서 초기 ~는 환경 변수 HOME으로 대체됩니다. 그렇지 않으면 현재 사용자의 홈 디렉토리가 내장 모듈 pwd를 통해 비밀번호 디렉토리에서 조회됩니다. 초기 ~ user는 암호 디렉토리에서 직접 조회됩니다. Windows에서 설정하면 HOME 및 USERPROFILE이 사용되며 그렇지 않으면 HOMEPATH 및 HOMEDRIVE의 조합이 사용됩니다. 초기 ~ user는 위에서 파생 된 생성 된 사용자 경로에서 마지막 디렉토리 구성 요소를 제거하여 처리됩니다. 확장이 실패하거나 경로가 물결표로 시작하지 않으면 경로가 변경되지 않고 반환됩니다.
따라서 다음과 같이 할 수 있습니다.
os.path.expanduser('~user')
<답변2>
나는 os.path.expanduser (path)가 귀하의 질문에 대한 최선의 대답이라고 생각하지만 유닉스 세계에서 언급할만한 대안이 있습니다 : pwd 패키지. 예 :
import os, pwd
pwd.getpwuid(os.getuid()).pw_dir
<답변3>
from pathlib import *
str(Path.home())
Python 3.5 이상에서 작동합니다. Path.home ()은 매우 유용한 API를 제공하는 Path 객체를 반환합니다.
<답변4>
home_folder = os.getenv ( 'HOME')
이것은 Windows 및 Mac OS에서도 작동해야하며 Linux에서도 잘 작동합니다.
<답변5>
창문의 경우;
import os
homepath = os.path.expanduser(os.getenv('USERPROFILE'))
현재 사용자의 홈 디렉토리에 대한 핸들을 제공하고
filepath = os.path.expanduser(os.getenv('USERPROFILE'))+'\\Documents\\myfile.txt'
아래 파일에 대한 핸들을 제공합니다.
C:\Users\urUserName\Documents\myfile.txt
<답변6>
실제로 환경 변수가 변경되면 집을 변경해야 함을 나타냅니다. 따라서 모든 프로그램 / 스크립트는 맥락에서 새로운 홈을 가져야합니다. 또한 결과는 그것을 변경 한 사람에게 달려 있습니다. 나는 여전히 home = os.getenv ( 'USERPROFILE') 또는 os.getenv ( 'HOME')을 고수합니다.
정확히 무엇이 필요합니까?
<답변7>
나는 이것이 답변 된 오래된 질문이라는 것을 알고 있지만 2 센트를 더할 것이라고 생각했습니다. 받아 들여진 대답은 나를 위해 작동하지 않았습니다. 사용자 디렉터리를 찾아야했고 sudo를 사용하거나 사용하지 않고 작업하기를 원했습니다. Linux에서 내 사용자 디렉토리는 "/ home / someuser"이지만 루트 디렉토리는 "/ root /"입니다. 그러나 내 Mac에서 사용자 디렉토리는 "/ Users / someuser"입니다. 내가 한 일은 다음과 같습니다.
_USERNAME = os.getenv("SUDO_USER") or os.getenv("USER")
_HOME = os.path.expanduser('~'+_USERNAME)
이것은 Mac과 Linux에서 sudo를 사용하거나 사용하지 않고 모두 작동했습니다.
<답변8>
Linux 및 기타 UNIXoid에서는 항상 / etc / passwd를 살펴볼 수 있습니다. 홈 디렉토리는 콜론으로 구분 된 여섯 번째 필드입니다. Windows의 환경 변수보다 더 잘하는 방법에 대한 아이디어는 없습니다. 이에 대한 시스템 호출이 있지만 Python에서 사용할 수 있다면 ...
<답변9>
Linux에서 (번역 된) 사용자 폴더 이름 가져 오기 :
from gi.repository import GLib
docs = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOCUMENTS)
desktop = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DESKTOP)
pics = GLib.get_user_special_dir(GLib.USER_DIRECTORY_PICTURES)
videos = GLib.get_user_special_dir(GLib.USER_DIRECTORY_VIDEOS)
music = GLib.get_user_special_dir(GLib.USER_DIRECTORY_MUSIC)
downloads = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DOWNLOAD)
public = GLib.get_user_special_dir(GLib.USER_DIRECTORY_PUBLIC_SHARE)
templates = GLib.get_user_special_dir(GLib.USER_DIRECTORY_TEMPLATES)
print(docs)
print(desktop)
print(pics)
print(videos)
print(music)
print(downloads)
print(public)
print(templates)
'개발 > Python' 카테고리의 다른 글
pyqt를 사용하여 mysql 데이터베이스의 데이터를 테이블에 표시하는 방법은 무엇입니까? (0) | 2020.09.22 |
---|---|
emit () 및 pyqtSignal ()의 PyQt 적절한 사용 (0) | 2020.09.22 |
Python ElementTree를 문자열로 변환 (0) | 2020.09.19 |
lxml의 태그 안의 모든 텍스트 가져 오기 (0) | 2020.09.19 |