0

在 Python 脚本(在 2.7 中执行)中,第二个语句返回 false,尽管该目录存在:

from os import path
path.exists( path.expanduser('~') )

我认为这是一个反斜杠问题,因为path.exists(...)“手动编码”主目录使用/or\\返回 true,正如预期的那样。

这个问题似乎有点特定于我的机器,因为相同的脚本在其他计算机(也运行 Windows)上运行良好。

是什么导致了这种行为?如何在不破解脚本的情况下修复它(在大多数 Windows 机器上运行良好)?

更新

该问题是由在我的系统上path.expanduser('~')用引号 ( ) 包裹路径引起的",但在其他系统上却没有。

基本问题仍然存在:为什么?

是否可以在不更改脚本的情况下在我的机器上更改此行为(我不维护该脚本并且对其他人有效)?

4

2 回答 2

2

查看 的源代码ntpath.py,该expanduser()函数首先尝试按该顺序返回环境变量,HOME最后USERPROFILE返回到 and 的组合HOMEDRIVEHOMEPATH所以我猜您在其中一个环境变量上设置了引号。

于 2013-04-22T16:09:45.070 回答
0
from os import path
path.exists( path.abspath(path.expanduser('~')) )

作品?(尚未测试,但应该更换\/问题)

引用path.exists()上的 Python 文档:

如果 path 引用现有路径,则返回 True。对于损坏的符号链接返回 False。在某些平台上,如果未授予对请求的文件执行 os.stat() 的权限,即使路径物理存在,此函数也可能返回 False。

于 2013-04-22T15:29:23.450 回答