2016-11-08 13 views
0

私はYYYY-MM-DD日付を持つディレクトリを名前として削除するプログラムを作成しています。私は、削除するフォルダのパス名のリストを作成するためのメソッドを記述していません。このリストに追加する基準は、フォルダ名の日付の年齢です。Pythonで文字列の古い日付を検索する3

これらの古い日付を識別するためのプログラムの取得に問題があります。

import os 
import sys 
import datetime 
import config #this is by me 

global archivePath # config value: "/archive/" 
global archiveForDays # config value: 14 

archivePath = config.archivePath 
archiveForDays = config.archiveForDays 

def getDestruDirList(): 
    # This method creates a list of files for deletion. 

    archiveList = os.listdir(archivePath) #get list of archive directorires 
    deletionList = []      #create list for deletion 

    for dateStr in archiveList: 
     skip = False 
     if (not dateStr == "current"): 
      dateVar = datetime.datetime.strptime(dateStr, "%Y-%m-%d") 
      if dateVar.date < datetime.datetime.now() - datetime.timedelta(days=archiveForDays): 
       deletionList.append(archivePath + dateStr) #add full pathname to deletion list 
       print("Revision " + dateVar.strftime("%d-%m-%Y") + " to be deleted.") 

    return deletionList 

このテストは機能しません。以前はこのエラーが発生したことはありませんでした。私はTypeError例外の問題の詳細を確認していますが、私はそれについて何をすべきかわからない、とこだわっています:...

Python 3.4.3 (default, Sep 9 2016, 06:04:18) 
[GCC 4.9.3] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import cleaner 
>>> cleaner.getDestruDirList() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/root/archive-scripts/cleaner.py", line 22, in getDestruDirList 
    if dateVar.date < datetime.datetime.now() - datetime.timedelta(days=archiveForDays): 
TypeError: unorderable types: builtin_function_or_method() < datetime.datetime() 

編集は、以下のような方法でテストが失敗します。

+0

'場合dateVar.date

+0

'' 'dateVar.date''''ですメソッド/関数/呼び出し可能?それは '' 'dateVar.date()' ''でしょうか?あるいは、単に '' '' dateVar'''を使うこともできます。 – wwii

答えて

0

問題は誤ったタイプの使用につながる構文エラーです。解決策を研究しているある時点で、私はPython2の例を見て間違っているかもしれません。ここには完成したユニットテスト済みのメソッドがあり、特定の日数以上の日付の後に指定されたディレクトリのリストを生成します。

def getDestruDirList(): 
    # This method creates a list of files for deletion. 

    archiveList = os.listdir(archivePath) #get list of archive directorires 
    deletionList = []      #create list for deletion 

    for dateStr in archiveList: 
     skip = False 
     if (not dateStr == "current"): 
      dateVar = datetime.datetime.strptime(dateStr, "%Y-%m-%d") 
      if dateVar.date() < datetime.datetime.now().date() - datetime.timedelta(days=archiveForDays): 
       deletionList.append(archivePath + dateStr) #add full pathname to deletion list 
       print("Revision " + dateVar.strftime("%d-%m-%Y") + " to be deleted.") 

    return deletionList 
関連する問題