C# 在IronPython中,os.access为模式os.F_OK返回无用值

C# 在IronPython中,os.access为模式os.F_OK返回无用值,c#,python,windows,file,ironpython,C#,Python,Windows,File,Ironpython,我尝试在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:\\", ".\\", "./

我尝试在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.F_OK的os.access返回False(与往常一样),但调用check os.R_OK会引发异常(与预期一样)

此外,我还在python解释器中测试了os.access方法,效果很好

我似乎找不到其他人有这个问题,这就是为什么我的第一个假设是我做了一些愚蠢的事情(或者错过了一些明显的事情)。我正在通过VisualStudio2010运行IronPython代码,可能有什么干扰


任何帮助都将不胜感激。首先要感谢,os.access可能会产生误导-最好只打开文件并捕获发生的任何异常

IronPython使用os.F_OK来表示“此文件是否存在”,并将其归结为调用
file.Exists()
——这将为目录返回false


,并应在2.7.1中修复。

首先,os.access可能会产生误导-最好只打开文件并捕获发生的任何异常

IronPython使用os.F_OK来表示“此文件是否存在”,并将其归结为调用
file.Exists()
——这将为目录返回false


,应该在2.7.1中修复。

我没有尝试,因为我试图保持原始python代码的完整性。其他进程本机使用python代码,因此我更喜欢使用我没有尝试过的python模块(如操作系统),因为我试图保持原始python代码的完整性。其他进程本机使用python代码,因此我更喜欢使用python模块(如操作系统),谢谢!正是我想要的解释谢谢!正是我想要的解释