ファイルを削除しようとしています。日付を確認し、必要以上に古い場合は削除します。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)