【问题标题】:How to make Python get the username in windows and then implement it in a script如何让Python在windows中获取用户名,然后在脚本中实现
【发布时间】:2021-06-22 12:52:08
【问题描述】:

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

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

(正在使用 Python 版本 2.7)

【问题讨论】:

  • 您只是在问如何在命令中将getpass.getuser() 的结果代替字符串'USERNAME'?如果是这样,这听起来很简单:只需在你写过'USERNAME' 的地方写上getpass.getuser(),就完成了。
  • 可能与this question重复

标签: python


【解决方案1】:

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、SendTo等)
  • 我不认为这个解决方案适用于 Windows,python 文档说它仅适用于 Unix。
  • @TrishantPahwa 我在文档中没有看到。我在 Windows 上都试过了,它们都可以正常工作。
  • 当你使用函数返回用户的用户名时,你可以在Python IDLE中查看它是否给你输出。
【解决方案2】:

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

【讨论】:

  • 这是我发现的让它在 IronPython 中工作的唯一方法。
【解决方案3】:
>>> os.path.join(os.path.expandvars("%userprofile%"),"Documents and Settings")
'C:\\Users\\USERNAME\\Documents and Settings'

应该足够了......我认为这就是你的实际意思......

【讨论】:

  • 这个脚本也有效,但它改变了我不想要的目录,谢谢你发帖
  • 你的意思是它改变了你的目录?
【解决方案4】:

安装win32com,然后:

from win32com.shell import shell, shellcon
print shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, None, 0)

【讨论】:

    【解决方案5】:

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

    print(os.getlogin())
    

    print(os.getenv('username'))
    

    如果您从 C 盘获得完整路径,请使用:

    print(os.environ['USERPROFILE']) #C:\Users\username
    

    【讨论】:

      【解决方案6】:

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

      >>> import os
      >>> print os.environ['desktop']
      C:\Users\KingMac\Desktop
      

      【讨论】:

        【解决方案7】:

        要获取当前用户目录,您也可以使用:

        from os.path import expanduser
        home = expanduser("~\buildconf")
        

        【讨论】:

          【解决方案8】:

          您也可以尝试以下方法:

          
          import os
          print (os.environ['USERPROFILE'])
          

          这样做的好处是可以直接得到如下输出:

          C:\\Users\\user_name

          【讨论】:

            【解决方案9】:

            import os 后跟 os.getlogin() 适用于 macOS 带有 python 3.7 的 Windows

            在此之后,您可以执行以下操作:

            path = ''.join(('C:/Users/', os.getlogin(), '/Desktop/'))
            

            【讨论】:

              【解决方案10】:

              这也适用于 Python 3.*

              os.path.join(os.environ['HOME'] + "/Documents and Settings")
              

              【讨论】:

              • 这确实有效,但如果有多个用户怎么办,而我们要查找的是当前用户。
              • @TrishantPahwa 为当前用户设置了环境变量。
              猜你喜欢
              • 1970-01-01
              • 2022-01-23
              • 2021-12-23
              • 2013-11-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-10-21
              相关资源
              最近更新 更多