windows - Adgang til dynamisk navngivet katalog i Python

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg samler i øjeblikket et script i Python, som vil gøre følgende: -



  • Opret en mappe i min Dropbox-mappe kaldet 'Spartacus'

  • Opret en underkatalog på denne placering med navnekonventionen for dato og klokkeslæt for oprettelsen

  • Opret en fil, der hedder iprecord.txt, i denne mappe, og der skrives oplysninger til denne fil.



Her er min kode thusfar ved hjælp af Python v2.7 på Windows 7: -


import os
import time
import platform
import urllib

current\_dir = os.getcwd()
targetname = "Spartacus"
target\_dir = os.path.join(current\_dir, targetname)
timenow = time.strftime("\%d-\%b-\%Y \%H-\%M-\%S")

def directoryVerification():
    os.chdir(current\_dir)
    try:
        os.mkdir('Spartacus')
    except OSError:
        pass
    try:
        os.system('attrib +h Spartacus')
    except OSError:
        pass

def gatherEvidence():
    os.chdir(target\_dir)
    try:
        evidential\_dir = os.mkdir(target\_dir + timenow)
        os.chdir(evidential\_dir)
    except OSError:
        pass
    f = iprecord.txt
    with f as open:
        ip\_addr = urllib.urlopen('http://www.biranchi.com/ip.php').read()
        f.write("IP Address:	 \%s	 \%s" \% ip\_addr, time.strftime("\%d-\%b-\%Y \%H-\%M-\%S"))


x = directoryVerification()
y = gatherEvidence()


Jeg fortsætter med at få en fejl i linje 26, hvorved den ikke kan løse den fulde sti til den dynamisk navngivne mappe (dato og klokkeslæt) en. Jeg har udskrevet værdien af ​​'evidential\_dir' og det viser sig at være Null.


Nogle pointers om hvor jeg går galt? Tak


PS: Eventuelle andre råd om min kode for at forbedre det ville blive værdsat
PPS: Eventuelle råd om, hvordan du finder standardmappen for 'Dropbox'? Er der mulighed for at scanne et filsystem til en mappe kaldet 'Dropbox' og fange stien?

Bedste reference


os.mkdir() returnerer ikke et stinavn, som du måske tænker. Det ser ud som om du gør inkonsekvente metoder til det samme på forskellige steder i din kode.
Prøv dette:


evidential\_dir = os.path.join(target\_dir, timenow)
os.mkdir(evidential\_dir)


Og reparer din anden linje:


f = "iprecord.txt"

Andre referencer 1


os.mkdir returnerer ikke noget.


evidential\_dir = target\_dir + timenow
try:
    os.mkdir(evidential\_dir)
except OSError:
    pass
os.chdir(evidential\_dir)