在Python脚本(在2.7中执行)中,第二个语句返回false,尽管该目录存在:
from os import path
path.exists( path.expanduser('~') )
我认为这是一个反斜杠问题,因为使用path.exists(...)
或/
的“手动编码”主目录的\\
会按预期返回true。
这个问题似乎有点特定于我的机器,因为相同的脚本在其他计算机上运行正常(也运行Windows)。
导致这种行为的原因是什么?如何在不破解脚本的情况下修复它(在大多数Windows机器上运行正常)?
更新
问题是由path.expanduser('~')
在我的系统上用引号("
)包装路径引起的,而不是在其他系统上引起的。
基本问题仍然存在:为什么?
是否可以在我的机器上更改此行为而无需更改脚本(这不是由我维护并且适用于其他所有人)?
答案 0 :(得分:2)
查看ntpath.py
的源代码,expanduser()
函数首先尝试按顺序返回环境变量HOME
然后USERPROFILE
,最后返回到复合HOMEDRIVE
和HOMEPATH
,所以我猜你在其中一个环境变量上设置了引号。
答案 1 :(得分:0)
from os import path
path.exists( path.abspath(path.expanduser('~')) )
作品? (尚未测试但应替换\
和/
问题)
引用来自 path.exists():
上的Python文档如果path指的是现有路径,则返回True。返回False 破碎的象征性联系。在某些平台上,此功能可能会返回 如果未授予权限以执行os.stat(),则返回false 请求的文件,即使路径实际存在。