【发布时间】:2011-07-25 23:46:04
【问题描述】:
我有一堆我试图在 IronPython 中使用的 python 脚本(我需要 C# 功能),我在 os.access 方法中遇到了一些问题。
当使用模式设置为 os.F_OK 的 os.access 方法时(查看是否可以访问路径),我每次都返回 False,即使 python 解释器为该目录返回 True 也是如此。奇怪的是,使用 os.R_OK、os.W_OK 和 os.X_OK 模式调用的 os.access 方法返回 True。
这是我敲出的一个代码示例来演示这个问题:
import os
d = ["C:\\", ".\\", "./", ".", "C:\\BOGUS_DIR"]
for path in d:
print path
try:
print "access: %s"%os.access(path, os.F_OK)
print "read: %s"%os.access(path, os.R_OK)
print "write: %s"%os.access(path, os.W_OK)
print "execute: %s"%os.access(path, os.X_OK)
print "-------------------------"
except Exception, e:
print e
print "finished"
raw_input("")
结果:
C:\
access: False
read: True
write: True
execute: True
-------------------------
.\
access: False
read: True
write: True
execute: True
-------------------------
./
access: False
read: True
write: True
execute: True
-------------------------
.
access: False
read: True
write: True
execute: True
-------------------------
C:\BOGUS_DIR
access: False
[Errno 2] Could not find file 'C:\BOGUS_DIR'.
finished
为了更好地衡量,我在列表中添加了一个虚假目录(一个不存在的目录)。 os.access 模式为 os.F_OK 返回 False(一如既往),但调用检查 os.R_OK 抛出异常(如预期)。
另外,我在 python 解释器中测试了 os.access 方法,效果很好。
我似乎找不到其他人遇到这个问题,这就是为什么我的第一个假设是我做了一些愚蠢的事情(或者错过了一些明显的事情)。我正在通过 Visual Studio 2010 运行 IronPython 代码,可能有一些干扰。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
我没有尝试过,因为我试图保持原始python代码不变。其他进程原生使用python代码,所以我更喜欢使用python模块(如os)
标签: c# python windows file ironpython