0

** 問題 ** 現在の名前の日付スタンプから 3 日以上前のファイルを (Python で) 開こうとしています。例: 2016_08_18_23_10_00 - JPN - MLB - ミッキーマウス v Burgerface.ply. これまでのところ、日付変数を作成できますが、ファイル名でこの変数を検索する方法がわかりません。最初に文字列に変換する必要があると思いますか?

from datetime import datetime, timedelta
import os
import re
path = "C:\Users\michael.lawton\Desktop\Housekeeper"

## create variable d where current date time is subtracted by 3 days ##

days_to_subtract = 3
d = datetime.today() - timedelta(days=days_to_subtract)

print d

## open file in dir where date in filename = d or older ##

for filename in os.listdir(path):
if re.match(d, filename):
    with open(os.path.join(path, filename), 'r') as f:
        print line,

どんな助けでも大歓迎です

4

2 に答える 2

0

名前に 3 日以上前のタイムスタンプが含まれる、指定されたディレクトリ内のすべてのファイルを開くには、次のようにします。

#!/usr/bin/env python2
import os
import time

DAY = 86400 # POSIX day in seconds
three_days_ago = time.time() - 3 * DAY
for filename in os.listdir(dirpath):
    time_string = filename.partition(" ")[0]
    try:
        timestamp = time.mktime(time.strptime(time_string, '%Y_%m_%d_%H_%M_%S'))
    except Exception: # can't get timestamp
        continue
    if timestamp < three_days_ago: # old enough to open
        with open(os.path.join(dirpath, filename)) as file: # assume it is a file
            for line in file:
                print line,

このコードは、タイムスタンプがローカル タイムゾーンにあることを前提としています。C がtz データベースmktime()にアクセスできるプラットフォームでは、DST 移行が考慮される場合があります(ファイルが 72 時間前か 73 時間前かが重要でない場合は、この段落を無視してください)。

名前からタイムスタンプを抽出する代わりに、「ファイルの最終変更時刻」などのファイル メタデータの使用を検討してくださいtimestamp = os.path.getmtime(path)

于 2016-09-21T17:28:03.433 に答える