2012-06-11 4 views
9

私は、さまざまな機能の日付引数を持つスクリプトを持っていますので、01-01-2012から06-09-2012に週末を除くループしたいと思います。イムは、私のスクリプトは、例えば、ファイル名に使用される日付でファイルを出力しますので、私は時間デルタを使用することができる方法を把握しようとしている:週末以外のループスルー

items = (functions.getItems(item,date) 
    print items 
    test = sum(abs(l[-1]) for l in items) 
    total = open('total' +str(datetime.today- datetime.timedelta(1)),'a') 

私ははtimedelta(1)欲しいサイクルに各日までのように、最初の日の出力ファイルはtotal2012-01-01の形式になり、ファイルtotal2012-06-09が作成されるまで繰り返されます。また、アイテムの日付引数がMM-DD-YYYY

の形式は、私はこれを行うことができると考えています

sd = 01-01-2012 
ed = 06-09-2012 
delta = datetime.timedelta(days=1) 
diff = 0 
while sd != ed 
    # do functions 
    # (have output files (datetime.today - datetime.delta(diff)) 
    diff +=1 
    sd+=delta 

だから、基本的に、私はちょうどで機能開始を持ってどのように私ループすることができますを把握しようとしています01-01-2012、末尾は06-10-2012で終わります。私はどのように適切な順序でループにそれを得るために

おかげ

+3

次使用することができ、代替としての日付を使用して避けてください。 MM-DD-YYYYの形式で入力します。要素が大きさの順でも増加してもいなくても、それは非常に混乱しています。さらに、それをISO標準YYYY-MM-DDの後で2番目に合理的な日付形式であるDD-MM-YYYYと簡単に混在させることができます。 – Celada

+0

私は@Celadaに同意し、できるだけISO形式を使用します。それが不可能な場合は、混乱を減らすためにセパレータとして '-'の代わりに'/'を使用してください。 –

答えて

12

datetime.weekday()メソッドを使用して、週末を除外する方法を考え出す問題が発生したとしています。平日に関連して0から6までの値を返します。土曜日の値は5、日曜日の値は6です。そう、これらの値が表示されたときに、操作をスキップした場合、あなたはweekdendsをスキップ:brandizziの答え@

start = datetime(2012, 1, 1) 
end = datetime(2012, 10, 6) 
delta = timedelta(days=1) 
d = start 
diff = 0 
weekend = set([5, 6]) 
while d <= end: 
    if d.weekday() not in weekend: 
     diff += 1 
    d += delta 
+0

そのエラーを受け取ります。 'TypeError:' module 'オブジェクトは呼び出し可能ではありません。' –

+2

@PriyanRockZおそらく、それを 'import datetime'としてインポートしました。代わりに 'from datetime import datetime'を使用してください。 – brandizzi

+0

おかげで親愛なる友人brandizzi.itsが解決しました:-) –

1

は、より多くの構文的に審美的ですが、あなたは

start = datetime(2012, 1, 1) 
end = datetime(2012, 10, 6) 
delta = timedelta(days=1) 
d = start 
diff = 0 
SATURDAY = 5 
while d <= end: 
    if d.weekday() < SATURDAY: 
     diff += 1 
     d += delta 
関連する問題