【问题标题】:How do you find the root directory so that a path works across multiple computers?您如何找到根目录以便路径可以跨多台计算机工作?
【发布时间】:2012-06-27 03:08:57
【问题描述】:

我正在编写一个程序来设置我用来存储数据的文件路径。格式如下

c://users/username/.../endingpath

当我切换计算机时,用户名会更改。有没有一种方法或方法可以指定我正在使用的特定计算机的用户名?还是有更好的方法使路径计算机独立?

我在 Windows 7 上运行 Python 2.7

【问题讨论】:

    标签: python windows path python-2.7


    【解决方案1】:

    使用下面的

    os.path.expanduser(path)
    

    确保路径与路径名前面的 ~ 或 ~user 是相对的

    http://docs.python.org/library/os.path.html

    【讨论】:

      【解决方案2】:

      在 Windows 下,您可以查看几个预定义的环境变量。其中之一是USERNAME

      所以:

      import os
      user_name = os.getenv("USERNAME")
      

      Windows 还为某些目录定义了环境变量。如果您的文件应该存储在用户的个人主目录中(在 Windows 7 上,这是:%SystemDrive%\Users\{username}),您可以使用USERDATAUSERPROFILE。这比尝试使用用户名构建自己的路径要好。

      @Matteo Italia 指出APPDATA 可能是最好用的;这是一个专门供应用程序存储其数据文件的目录。这对我来说很有意义;我认为他是对的。

      所以:

      import os
      appdata_dir_name = os.getenv("APPDATA")
      

      我在 Wikipedia 中找到了一个 Windows 环境变量列表:

      http://en.wikipedia.org/wiki/Environment_variable#Examples_from_Microsoft_Windows

      【讨论】:

      • 我想说,为了保持您的应用程序设置,最好将您的配置文件存储在 %APPDATA% 下(如果有多个文件,请创建一个以您的应用程序命名的子目录并将它们存储在那里)。
      • @MatteoItalia,我认为你是对的,我更新了答案以包含你的意见。感谢您的评论。
      【解决方案3】:

      您应该使用SHGetKnownFolderPath function 找到相应的目录。您可能可以使用pywin32 来使用该功能。

      【讨论】:

      • 为什么推荐这个而不是检查环境变量USERPROFILE?这会起作用,但似乎有点矫枉过正。
      • 环境变量不是查找该信息的地方。它可能会在那里重复,但这是一种方便,而不是合同。如果某个程序可以访问 API,您应该使用它。
      【解决方案4】:

      由于您指定了 Windows 7,我假设您在将执行该程序的所有计算机上都使用它,因此,您可以使用 '%UserProfile%/.../endingpath'。 (或'%UserProfile%\\...\\endingpath'。)

      http://en.wikipedia.org/wiki/Home_directory#Default_Home_Directory_per_Operating_System

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-21
        • 2014-11-10
        • 1970-01-01
        相关资源
        最近更新 更多