Discussion:
[Python] Hvordan aflæser jeg filetime på en server via FTP?
(for gammel til at besvare)
Bertel Lund Hansen
2010-12-29 17:53:34 UTC
Permalink
Hej alle

Jeg er ved at lave et program der overfører modificerede
zippakker til en webserver. Mærkeligt nok sætter WinRAR ikke
arkivbitten hvis det opdaterer en eksisterende pakke. Det var
ellers den nemmeste måde at klare det på. Alternativt kunne jeg
på klientsiden holde rede på datoerne, men det jo molboagtigt.

Jeg vil gerne kunne aflæse filetime for hver af de filer der
ligger på serveren så jeg kun overskriver med nyere filer.

Hvis der er en (halv)færdig løsning på problemet, har det
naturligvis også interesse.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Klaus Alexander Seistrup
2010-12-29 18:06:12 UTC
Permalink
Post by Bertel Lund Hansen
Jeg vil gerne kunne aflæse filetime for hver af de filer der
ligger på serveren så jeg kun overskriver med nyere filer.
Jeg er ikke nogen haj til FTP-protokollen, men prøv at se exemplet i
starten af den ftplib.py der følger med python som standard. Hvis du
ikke kan bruge LIST-kommandoen, kan MLSD måske være nyttig. Se evt.
RFC 3659: https://tools.ietf.org/html/rfc3659

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Bertel Lund Hansen
2010-12-29 18:23:33 UTC
Permalink
Post by Klaus Alexander Seistrup
Jeg er ikke nogen haj til FTP-protokollen, men prøv at se exemplet i
starten af den ftplib.py der følger med python som standard.
Ja, der er nogle muligheder for at få overført en filliste, men
den skrives ud til sys.stdout. Hvordan kan jeg få det 'samlet op'
i en variabel?
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Klaus Alexander Seistrup
2010-12-29 22:07:23 UTC
Permalink
Post by Bertel Lund Hansen
Ja, der er nogle muligheder for at få overført en filliste, men
den skrives ud til sys.stdout. Hvordan kan jeg få det 'samlet op'
i en variabel?
Prøv at sætte callback til noget fornuftigt:

#v+
Post by Bertel Lund Hansen
from ftplib import FTP
lines = []
... if line is not None:
... lines.append(line)
Post by Bertel Lund Hansen
ftp = FTP('tgftp.nws.noaa.gov')
ftp.login()
'230 Login successful.'
Post by Bertel Lund Hansen
ftp.retrlines('LIST', callback=mycb)
'226 Directory send OK.'
Post by Bertel Lund Hansen
lines
['-rwxrwxrwx 1 48 48 1702 Oct 29 2007 README.TXT',
'drwxr-xr-x 24 0 0 4096 Jan 20 2010 SL.us008001',
:
'drwxrwxr-x 3 0 0 4096 Feb 08 2006 wmo']
Post by Bertel Lund Hansen
help(FTP)
#v-

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Bertel Lund Hansen
2010-12-30 13:32:31 UTC
Permalink
Tak, det kan jeg bruge. Nu er problemet løst - bortset fra at man
ikke får årstallet med ved ftp.retrlines. Det har jeg 'løst' ved
at bruge en parameter der hedder FORCE. Hvis den sættes til true,
kopieres alle filer uanset om de er opdateret siden sidst. Den må
jeg så bruge én gang efter hvert nytår.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Loading...