我已经创建了一个在Windows上运行良好的Python程序,但现在我把它带到我的Apple Mac上进行测试。该应用程序有一个sqlite数据库,我还有一些错误记录文件,这些文件在安装应用程序时保留,或者只是从源代码初始化。
在Windows平台上,为了定义数据库路径,我使用了以下命令:
appDataPath = os.environ["APPDATA"] + "\\FOLDERNAME\\"
但在我的Mac上,我得到以下堆栈跟踪:
Traceback (most recent call last):
File "main.py", line 9, in <module>
from view import tick
File "/Users/myname/Desktop/APPNAME/view/tick.py", line 8, in <module>
from controller import get
File "/Users/myname/Desktop/APPNAME/controller/get.py", line 4, in <module>
appDataPath = os.environ["/Users/myname/Desktop"] + "\\FOLDERNAME\\"
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: '/Users/myname/Desktop'
我可以做些什么来完成这项工作?我尝试将其更改为我的桌面位置,但仍然没有乐趣。 mac在哪里存储应用程序数据?在Windows上,您可能非常了解,位于漫游目录中。
提前致谢
答案 0 :(得分:0)
os.environ
是包含环境变量的字典。没有名为/Users/myname/Desktop
的变量。这就是你获得KeyError
的原因。但 是一个名为HOME
的变量。
>>> os.environ['HOME']
'/Users/NAME/'
这应该同样适用于Windows和OSX。
现在,如果要连接路径,则应使用os.path.join
:
>>> os.path.join(os.environ['HOME'], 'MYPROJECT')
'/Users/NAME/MYPROJECT'