2017-06-01 2 views
0

私はPythonには比較的新しいですし、2つの日付の間に作成されたファイル(写真)を見つけてフォルダに入れるスクリプトを作成しようとしています。 そのためには、何らかの形でファイルの作成日を取得する必要があります(Im on Windows)。 私はすでにすべてのコードを持っていますが、各写真の日付を取得するだけで済みます。日付が返される形式を調べることも興味深いでしょう。最高はm/d/yまたはd/m/y(d =日; m =月、y =年)のようになります。 ありがとうございます!私はこのフォーラムを初めて利用していますPython:2つの日付の間に作成日があるファイル(png)を見つける

+0

これまでに何を試しましたか? – Mureinik

+0

特定のフォルダまたはシステム全体でファイルを検索していますか? –

答えて

0

Python osのパッケージを参照してください。ファイルの日付を抽出することができます。日付操作については、Python datetimeパッケージを参照してください。

また、お使いのバージョンで利用可能なWindowsコマンドを確認してください。ほとんどのバージョンでは、日付パラメータを持つ検索機能があります。 OSのシステムコマンドで必要なファイル名を返すことができます。

1

私はあなたが何らかの理由でファイルをリストアップしていると想像して、 os.stat(path).st_ctimeを使用してWindowsで作成した後、datetimeモジュールの文字列形式を使用します。

https://docs.python.org/2/library/stat.html#stat.ST_CTIME

https://stackoverflow.com/a/39359270/928680 この例では、ファイルのmtime(変更)時間を変換する方法を示していますが、同じことがCTIMEに適用される(作成時間)

あなたは、それは比較的簡単ですctimeのを持っている一度そのかどうかを確認しますあなたは文字列に変換する前に、あなたの日付のロジックを実行する必要があります

https://stackoverflow.com/a/5464465/928680

範囲内に収まります。

解決策の1つは、それほど効率的ではありません。これを行う方法の1つを示すだけです。

import os 
from datetime import datetime 

def filter_files(path, start_date, end_date, date_format="%Y"): 
    result = [] 
    start_time_obj = datetime.strptime(start_date, date_format) 
    end_time_obj = datetime.strptime(end_date, date_format) 
    for file in os.listdir(path): 
     c_time = datetime.fromtimestamp(os.stat(file).st_ctime) 
     if start_time_obj <= c_time <= end_time_obj: 
      result.append("{}, {}".format(os.path.join(path, file), c_time)) 
    return result 


if __name__ == "__main__": 
    print "\n".join(filter_files("/Users/Jagadish/Desktop", "2017-05-31", "2017-06-02", "%Y-%m-%d")) 

歓声!

+0

ありがとうございます!私は後でこれをテストします。また、フォルダ内のすべてのファイルを特定のタイムスパン内で作成したものをTHENで検索する「簡単な」方法はありますか?:) – crazycoder69

+0

2つの日付の間でファイルをフィルタする回答を追加しました – Jag

0

subprocessを使用してファイルに対してシェルコマンドを実行すると、そのファイルのmeta_dataを取得できます。

import re 
from subprocess import check_output 

meta_data = check_output('wmic datafile where Name="C:\\\\Users\\\\username\\\\Pictures\\\\xyz.jpg"', shell=True) 

# Note that you have to use '\\\\' instead of '\\' for specifying path of the file 

pattern = re.compile(r'\b(\d{14})\b.*') 

re.findall(pattern,meta_data.decode()) 

=> ['20161007174858'] # This is the created date of your file in format - YYYYMMDDHHMMSS 
関連する問題