如何让Python在Windows中获取用户名,然后在脚本中实现它

Kin*_*Mak 21 python

我知道使用 getpass.getuser()命令,我可以获取用户名,但是如何自动在以下脚本中实现呢?所以我希望python找到用户名,然后在下面的脚本中实现它.

脚本: os.path.join('..','Documents and Settings','USERNAME','Desktop'))

(正在使用Python版本2.7)

Gia*_*uca 37

os.getlogin() 返回正在执行的用户,因此它可以是:

path = os.path.join('..','Documents and Settings',os.getlogin(),'Desktop')

或者,使用getpass.getuser()

path = os.path.join('..','Documents and Settings',getpass.getuser(),'Desktop')

如果我理解你的要求.

  • 这个解决方案的问题是,你是语言依赖.例如:德语窗口名称"Documents and Settings"是"Dokumente und Einstellungen".接下来的一点是,您对Desktop目录做了另一个假设.如果您需要访问SendTo目录,该怎么办?在Windows XP和Windopws 7上,他们在用户配置文件中有完全不同的相对路径.要克服语言和版本依赖性,您应该使用来自win32com的调用.让windows返回用户请求实体的目录名(Desktop,Sen​​dTo等) (5认同)
  • 我认为这个解决方案不适用于 Windows,python 文档说它仅适用于 Unix。 (3认同)
  • @TrishantPahwa 我在文档中没有看到这一点。我已经在 Windows 上尝试过了,它们都工作得很好。 (2认同)

Cod*_*key 37

os.getlogin()对我来说不存在.os.getenv('username')然而,我取得了成功.


mam*_*mal 10

要获取当前用户名:在代码中添加import os,然后使用:

print(os.getlogin())
Run Code Online (Sandbox Code Playgroud)

或者

print(os.getenv('username'))
Run Code Online (Sandbox Code Playgroud)

如果您从 C 驱动器获得完整路径,请使用以下命令:

print(os.environ['USERPROFILE']) #C:\Users\username
Run Code Online (Sandbox Code Playgroud)


Bur*_*lid 5

安装win32com,然后:

from win32com.shell import shell, shellcon
print shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, None, 0)
Run Code Online (Sandbox Code Playgroud)


Jor*_*ley 5

>>> os.path.join(os.path.expandvars("%userprofile%"),"Documents and Settings")
'C:\\Users\\USERNAME\\Documents and Settings'
Run Code Online (Sandbox Code Playgroud)

应该就足够了。我认为那实际上就是你的意思。

  • 您是什么意思,它改变了您的目录? (2认同)

Pet*_*ood 5

如果你想要桌面目录,Windows 7有一个环境变量DESKTOP::

>>> import os
>>> print(os.environ['desktop'])
C:\Users\KingMak\Desktop
Run Code Online (Sandbox Code Playgroud)