[Python] laatste vier zondagen

Pagina: 1
Acties:

  • DumbAss
  • Registratie: April 2002
  • Laatst online: 16-08-2025
Ik probeer de laatste vier zondagen te vinden. Dus als dat script op 22 juli zou draaien dan zou hij terug moeten geven: 16-07-2006, 09-07-2006, 02-07-2006, 25-06-2006.

Nu kan ik wel door al die dagen heenlopen en als het een zondag is hem aan de lijst toevoegen, maar is er geen handige functie in Python die dit voor mij kan doen? Als basis voor documentatie over datetime gebruik ik deze pagina:
http://pleac.sourceforge.net/pleac_python/datesandtimes.html

Vanutsteen.nl => nerds only | iRacing


  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 23:43
Zondagen liggen over het algemeen 7 dagen uit elkaar ;)

Dus als je er 1tje hebt gevonden...

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


  • DumbAss
  • Registratie: April 2002
  • Laatst online: 16-08-2025
OnTracK schreef op zondag 23 juli 2006 @ 13:35:
Zondagen liggen over het algemeen 7 dagen uit elkaar ;)

Dus als je er 1tje hebt gevonden...
Ja :) daar dacht ik ook al aan. Maar misschien dat er een standaard functie voor is, dan zou dat wel handig zijn. Ik ben nu twee weekjes bezig met Python en moet nog leren welke functies e.d. er allemaal beschikbaar zijn.

Vanutsteen.nl => nerds only | iRacing


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

In die pagina waar je naar linked staat een voorbeeld "Adding to or Subtracting from a Date". Middels datetime.timedelta(days=7) kan je een vorige datum vinden zonder zelf na te hoeven denken over verschillende maandlengtes, enge schrikkeldingen, etc.

Verder begrijp ik uit die pagina dat in het datetime tuple de dag van de week zit, dus je hoeft alleen maar te weten of weken op zondag of maandag beginnen en "dag van de week" of "dag van de week + 1" van de huidige dag af te trekken om de afgelopen zondag te vinden.

[ Voor 3% gewijzigd door Confusion op 23-07-2006 13:52 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • DumbAss
  • Registratie: April 2002
  • Laatst online: 16-08-2025
Deze datumfuncties had ik nog voor onderstaand script. Deze hoort bij een backupscript en checkt welke directories mogen blijven staan. De overige directories worden verwijderd.
Zitten hier nog rare dingen / grove fouten in die misschien beter anders hadden gekund?
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python
import datetime, smbmount, log, os

def in_array(searchValue):
    for k, v in dict.items():
        if v == searchValue:
            return True
    return False

dict = {}
today = datetime.date.today()

#vandaag toevoegen aan de te-houden-backups
dict["day1"] = today

#Ook de rest van de afgelopen week bewaren
for i in range(2,8):
    delta = datetime.timedelta(days=i-1)
    date = today - delta
    dict["day%s" % i] = date

#Get the first sunday
dow_today = today.isoweekday()
if (dow_today == 7):
    dict["sunday1"] = today
else:
    delta = datetime.timedelta(dow_today)
    dict["sunday1"] = today - delta
    
#Then get the other three sundays
for i in range(2,5):
    delta = datetime.timedelta(weeks=i)
    date = dict["sunday1"] - delta
    dict["sunday%s" % i] = date

#First try to mount the samba share
try:
    share = '//10.76.122.23/Backups'
    homedir = log.getHomeDir()
    mountpoint = '%s/mnt/backups' % homedir
    username = 'dikkevinger'
    password = 'hackme'
    smbmountObj = smbmount.smbmount(share, mountpoint, username, password)
    smbmountObj.mountShare()
except Exception, e:
    log.logError(e)
    sys.exit()
    
dirs = os.listdir("%s/webaccounts" % smbmountObj.mountpoint)

#Change the datetime objects in strings
for k,v in dict.items():
    dict[k] = v.strftime("%Y%m%d")

dellist = []
for v in dirs:
    if not in_array(v):
        dellist.append(v)
        
#Maybe some more checks?
for dir in dellist:
    absolutePath = smbmountObj.mountpoint + '/webaccounts/' + dir
    log.logMessage("I'm going to delete this dir: %s" % (absolutePath))
    import shutil
    try:
        shutil.rmtree(absolutePath)
    except Exception, e:
        log.logError("Failed to delete directory %s" % absolutePath)

[ Voor 32% gewijzigd door DumbAss op 23-07-2006 17:20 . Reden: Nog wat code wijzigingen ]

Vanutsteen.nl => nerds only | iRacing


Verwijderd

"except Exception, e" is nogal ranzig. Als je een bepaald soort exception (bijv. IOError) verwacht, moet je die opvangen. In plaats van je in_array() functie kan je ook gewoon "waarde in dict.values()" gebruiken. Inhoudelijk heb ik niet naar je script gekeken, dit zijn gewoon dingen die me opvielen als niet erg Pythonic.

  • DumbAss
  • Registratie: April 2002
  • Laatst online: 16-08-2025
Verwijderd schreef op zondag 23 juli 2006 @ 17:23:
"except Exception, e" is nogal ranzig. Als je een bepaald soort exception (bijv. IOError) verwacht, moet je die opvangen. In plaats van je in_array() functie kan je ook gewoon "waarde in dict.values()" gebruiken. Inhoudelijk heb ik niet naar je script gekeken, dit zijn gewoon dingen die me opvielen als niet erg Pythonic.
Hee bedankt. Ik gebruikte die vorm van exception omdat ik gewoon alle mogelijke exceptions wilde opvangen.
De code met waarde in dict.values() werkte erg goed!

Vanutsteen.nl => nerds only | iRacing

Pagina: 1