2

ファイルを削除しようとしています。日付を確認し、必要以上に古い場合は削除します。1 つの .zip ファイルが削除されていないことに気付きました。読み取り専用だったので、少しのテスト コードで、os.chmod(path, stat.S_IWRITE) を使用してから os.remove(path) を使用したところ、機能しました。このコードをメイン コードに挿入すると、エラーが発生しました。os と stat モジュールを両方にインポートします。

以下は動作するテストコードですが、これをより大きなコードに入れると、エラーが発生し、完全なコードはこれも単なる定義です。

AttributeError: 'nt.stat_result' オブジェクトに属性 'S_IWRITE' がありません

dpath と dayscount がパスと日数を通過していることを確認しました。

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)

ここを読んだ後、リンクを見つけました:このページのコードは、モジュールのインポートの例を示しています。答えは、モジュールを関数にインポートすると言いました。メインコードでこれを試してみましたが、うまくいきました。

メインコードはコードの先頭で os と stat をインポートしていますが、この関数はそれを認識していないようです。理由はわかりません。モジュールにインポートすると、それが表示されます。そのため、メイン コードを挿入するときに、インポートをモジュールに追加する必要がありました。以下を参照してください。

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)
4

1 に答える 1

1

statコードのどこかに(os.stat呼び出しの結果に)名前の変数を設定しています。この変数は統計モジュールを覆い隠します。

変数を検索してstat =、 などの別の名前に変更しますstat_result

于 2012-06-21T16:02:16.800 に答える