1

7 日より古いファイルのフォルダーをチェックして削除するスクリプトを作成しようとしていますが、「現在」から 1 日未満のファイルが存在する場合のみです。

そのため、作成後 1 日未満の新しいファイルが作成された場合は、7 日より古いすべてのファイルを削除します。

これは私のスクリプトです -

import os, time
path = r"C:\Temp" #working path#
now = time.time()
for f in os.listdir(path):
 f = os.path.join(path, f)
 if os.stat(os.path.join(path, f).st_mtime < now -1 * 86400 and\ #checking new file#
 if os.stat(os.path.join(path,f)).st_mtime < now - 7 * 86400: #checking old files#
  if os.path.isfile(f):
   os.remove(os.path.join(path, f)

古いファイルをチェックする行で構文エラーが発生します。正しくインデントしていませんか?これは無効なコーディング方法ですか? プログラムは毎日新しいファイルを作成します。このスクリプトは、そのファイルが作成されているかどうかを確認し、作成されている場合は、7 日より古いファイルを確認して削除します。構文エラーがわかりません。ロジックは正しいのですか?

4

2 に答える 2

4
import os, time
path = r"C:\Temp" #working path#
now = time.time()
old_files = [] # list of files older than 7 days
new_files = [] # list of files newer than 1 day
for f in os.listdir(path):
    fn = os.path.join(path, f)
    mtime = os.stat(fn).st_mtime
    if mtime > now - 1 * 86400:
        # this is a new file
        new_files.append(fn)
    elif mtime < now - 7 * 86400:
        # this is an old file
        old_files.append(fn)
    # else file between 1 and 7 days old, ignore
if new_files:
    # if there are any new files, then delete all old files
    for fn in old_files:
        os.remove(fn)
于 2012-09-20T15:20:59.207 に答える
0

あなたのコードにはいくつかの問題があります。

  • 次の行に閉じ括弧がありません:

    if os.stat(os.path.join(path, f).st_mtime < now -1 * 86400

実際には次のようになります。

if os.stat(os.path.join(path, f)).st_mtime < now -1 * 86400
  1. andの必要はありません

    if os.stat(os.path.join(path, f).st_mtime < now -1 * 86400 and\ #新しいファイルのチェック# if os.stat(os.path.join(path,f)).st_mtime < now - 7 * 86400:

そのはず:

if os.stat(os.path.join(path, f)).st_mtime < now -1 * 86400 and\ #checking new file#
os.stat(os.path.join(path,f)).st_mtime < now - 7 * 86400:
  1. ステートメントにブラケットを使用してみてください。

    if os.stat(os.path.join(path, f)).st_mtime < (現在 -1 * 86400) および os.stat(os.path.join(path,f)).st_mtime < (現在 - 7 * 86400):

于 2012-09-20T15:29:52.700 に答える