파이썬에서 현재 사용자의 사용자 이름을 얻는 이식 가능한 방법이 있습니까 (즉, 적어도 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 문서를 참조하십시오.
답변
다음을 사용할 수도 있습니다.
os.getlogin()
답변
아마도 다음을 사용할 수 있습니다.
os.environ.get('USERNAME')
또는
os.environ.get('USER')
그러나 환경 변수를 변경할 수 있기 때문에 안전하지 않습니다.
답변
이것들은 효과가있을 수 있습니다. 서비스로 실행할 때 이들이 어떻게 작동하는지 모르겠습니다. 그것들은 이식성이 없지만 그것이 목적 os.name
과 if
진술입니다.
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
모듈이나 확장을 설치할 필요가 없습니다.