关于python:AttributeError:’nt.stat_result’对象没有属性’S_IWRITE’

AttributeError: 'nt.stat_result' object has no attribute 'S_IWRITE'

我正在删除一个文件。我检查日期,如果它比我想要的要旧,就删除它。我注意到一个.zip文件没有删除。它是只读的,所以在一些测试代码中,我使用了os.chmod(path,stat.s_iwrite),然后使用os.remove(path),它就工作了。我把这段代码放到主代码中,得到了错误。我在两个模块中都导入了OS和STAT模块。

下面是有效的测试代码,但是当我把它放入更大的代码中时,我得到了错误和完整的代码,这也是一个def:

attributeError:'nt.stat'result'对象没有属性's'iWrite'

我检查过dpath和dayscount正在通过路径和天数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import os, stat

def del_file(dpath, dayscount):
    if dayscount > 10:
        if dpath[-4:]==".zip":
            os.chmod(dpath,stat.S_IWRITE)
            os.remove(dpath)
        else:
            os.remove(dpath)
    else:
        print"File is Good"

dpath ="C:\Workspace\Test_Data.zip"
dayscount = 15
del_file(dpath, dayscount)

在这里阅读之后,我发现了一个链接:这个页面上的代码显示了一些导入模块的示例。回答说要在函数中导入模块。我在我的主代码上尝试了这个,它起作用了。

主代码在代码顶部导入操作系统和stat,但这个函数似乎看不到它。我不知道为什么。当我在模块中导入它时,它会看到它。因此,当输入主代码时,我必须将导入添加到模块中,请参见下面的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import os, stat

def test_date():
Code for this function

def get_month():
Code for this function

def del_file(dpath, dayscount):
    import os, stat
    print dpath
    print dayscount
    if dayscount > 10:
        if dpath[-4:]==".zip":
            os.chmod(dpath,stat.S_IWRITE)
            #os.remove(dpath)
        else:
            os.remove(dpath)
    else:
        print"File is Good"

dpath ="C:\Workspace\Test_Data.zip"
dayscount = 13
del_file(dpath, dayscount)


您正在代码中的某个地方设置一个名为stat的变量(根据os.stat调用的结果)。这个变量掩盖了stats模块。

搜索stat =并将变量重命名为其他名称,如stat_result