[python] 파이썬에서 현재 사용자 이름을 얻는 휴대용 방법이 있습니까?

파이썬에서 현재 사용자의 사용자 이름을 얻는 이식 가능한 방법이 있습니까 (즉, 적어도 Linux와 Windows에서 작동하는 사용자 이름). 다음과 같이 작동합니다 os.getuid.

>>> os.getuid()
42
>>> os.getusername()
'slartibartfast'

나는 구글을 둘러 보았고 결정적인 대답을 찾지 못하는 것에 놀랐다. PWD 모듈은 리눅스를,이 아래를 달성 말을 상대적으로 쉬운 방법을 제공하지만, 윈도우에 존재하지 않습니다. 검색 결과 중 일부는 Windows에서 사용자 이름을 얻는 것이 특정 상황 (예 : Windows 서비스로 실행)에서 복잡 할 수 있음을 제안했지만, 확인하지는 못했습니다.



답변

에서 봐 getpass 모듈

import getpass
getpass.getuser()
'kostya'

가용성 : 유닉스, 윈도우


ps under comment below ” 이 함수는 다양한 환경 변수의 값을보고 사용자 이름을 결정합니다. 따라서이 함수는 액세스 제어 목적 (또는 다른 목적으로는 다른 사용자를 사칭 할 수 있으므로 다른 목적으로 사용해서는 안 됨) ).


답변

가장 좋은 방법은 다음과 결합하는 것 os.getuid()입니다 pwd.getpwuid().

import os
import pwd

def get_username():
    return pwd.getpwuid( os.getuid() )[ 0 ]

자세한 내용은 pwd 문서를 참조하십시오.

http://docs.python.org/library/pwd.html


답변

다음을 사용할 수도 있습니다.

 os.getlogin()


답변

아마도 다음을 사용할 수 있습니다.

os.environ.get('USERNAME')

또는

os.environ.get('USER')

그러나 환경 변수를 변경할 수 있기 때문에 안전하지 않습니다.


답변

이것들은 효과가있을 수 있습니다. 서비스로 실행할 때 이들이 어떻게 작동하는지 모르겠습니다. 그것들은 이식성이 없지만 그것이 목적 os.nameif진술입니다.

win32api.GetUserName()

win32api.GetUserNameEx(...) 

참조 :
http://timgolden.me.uk/python/win32_how_do_i/get-the-owner-of-a-file.html


답변

사용자의 홈 디렉토리를 가져 오기 위해 이것이 필요한 경우 아래는 표준 라이브러리의 일부로 휴대용 (적어도 win32 및 Linux)으로 간주 될 수 있습니다.

>>> os.path.expanduser('~')
'C:\\Documents and Settings\\johnsmith'

또한 이러한 문자열을 구문 분석하여 마지막 경로 구성 요소 (예 : 사용자 이름) 만 가져올 수 있습니다.

참조 : os.path.expanduser


답변

os모듈을 사용 하는 것이 이식성에 가장 적합합니다. Linux와 Windows 모두에서 가장 잘 작동합니다.

import os

# Gives user's home directory
userhome = os.path.expanduser('~')

print "User's home Dir: " + userhome

# Gives username by splitting path based on OS
print "username: " + os.path.split(userhome)[-1]           

산출:

윈도우 :

사용자의 집 Dir : C : \ Users \ myuser

사용자 이름 : myuser

리눅스 :

사용자의 집 Dir : / root

사용자 이름 : root

모듈이나 확장을 설치할 필요가 없습니다.