3

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

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

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

我在 Windows 7 上运行 Python 2.7

4

4 回答 4

7

在 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

于 2012-06-25T20:09:37.097 回答
2

您应该使用SHGetKnownFolderPath 函数找到适当的目录。您可能可以使用pywin32来使用该功能。

于 2012-06-25T20:15:55.317 回答
1

使用以下

os.path.expanduser(path)

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

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

于 2012-06-25T20:28:10.120 回答
1

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

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

于 2012-06-25T20:10:26.677 回答