0

すべて。

フォルダ内のいくつかのファイルの経過時間をチェックし、新しいファイルが作成されている場合は古いファイルを削除するスクリプトを作成しようとしています。新しいファイルが作成されなかった場合、古いファイルは削除されず、新しいファイルが作成されなかったことを通知する電子メールが送信されます。

OSモジュールctimeを使用してファイルの経過時間を確認し、外部スクリプト「sendmail」を使用して電子メールを処理しています。

現在は機能しているため、古いファイルと新しいファイルを正しく判別してから古いファイルを削除しますが、sendmailを呼び出すかどうかを正しく判断することはできません。披露させて:

for fn in os.listdir(path, f)
 fn = os.path.jion(path, f)
 ctime = os.stat(fn).st_ctime
 if ctime > now - 1 * 86400: #this is a new file
  new_files.append(fn)
  countit = new_files.count(fn) #counting the occurence of appended files
 if new_Files.count(fn) > countit: #checks the list
  import sendmail
   sendmail
 elif ctime < now - 10 * 86400: #checking for old file
  old_files.append(fn)
if new_files:
 for fn in old_files:
  os.remove(fn)

だから、私はこれについていくつかの助けを得ることができますか?私は本当に立ち往生しています。次のように、elifステートメントを使用してリストを確認する必要があります。

if ctime > now - 1 * 86400:
 new_files.append(fn)
elif:
 import sendmail
  sendmail

それを書くのに適切な方法ですか?この決定を書く正しい方法はありますか?スクリプト全体が間違っていますか?

編集-申し訳ありませんが、私が気まぐれである場合、私はこれにしばらく取り組んできました、そしてそれは非常にイライラしています。私はあなたが与えることができるどんな助けにも感謝します!!!

4

3 に答える 3

1

おそらく次のようなことをしたいようです:

for fn in os.listdir(path, f):
    fn = os.path.join(path, f)
    ctime = os.stat(fn).st_ctime
    if ctime > now - 1 * 86400: #this is a new file
        new_files.append(fn)
        countit = new_files.count(fn) #counting the occurrence of appended files
    elif ctime < now - 10 * 86400: #checking for old file
        old_files.append(fn)
if new_files:
    for fn in old_files:
        os.remove(fn)
else:
    import sendmail
        sendmail.sendmail()
于 2012-10-09T16:28:01.607 に答える
0

OS モジュール ctime を使用して、ファイルの経過時間を確認しています...

おっと!ctime は、すべてのオペレーティング システムでファイルが作成された時刻ではありません。使用している OS がはっきりしていない限り、これに依存しないでください。mtime は代わりに最終変更時刻ですが、すべてのオペレーティング システムでサポートされています。

于 2012-10-09T16:20:43.213 に答える
0

sendmail が正確に何をしているのか、何をすべきなのかを判断するのに苦労しています。そのモジュールも投稿できますか?

また、ファイルを何度もインポートする必要がないように、ファイルの先頭に import ステートメントを配置することをお勧めします。これにより、パフォーマンスが大幅に高速化されます。

また、「os.listdir(path, f)」という行が何をしているのか理解できません。複数の引数を指定して os.listdir メソッドを実行しようとすると、エラーが発生します。これはタイプミスですか?

于 2012-10-09T16:18:24.297 に答える