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()
編集は、以下のような方法でテストが失敗します。
'場合dateVar.date
'' 'dateVar.date''''ですメソッド/関数/呼び出し可能?それは '' 'dateVar.date()' ''でしょうか?あるいは、単に '' '' dateVar'''を使うこともできます。 – wwii