Domanda

Ho creato uno script in PHP per aggiornare un server web che si vive all'interno di una directory locale.Sto migrando lo script in Python.Funziona bene per la maggior parte, ma dopo un comando PUT, la dimensione del file sembra cambiare.Così, la dimensione del file è diverso da quello del file sul server.

Una volta che ho scaricato di nuovo il file dal server FTP, l'unica differenza è il CR/LF marchio.Questo mi dà fastidio, perché lo stesso copione è il confronto tra la dimensione del file per l'aggiornamento.Inoltre, nel caso significa nulla, lo script funziona perfettamente in PHP vía ftp_put.

from ftplib import FTP

ftpserver = "myserver"
ftpuser = "myuser"
ftppass = "mypwd"

locfile =  "g:/test/style.css"
ftpfile =  "/temp/style.css"

try:
    ftp = FTP(ftpserver, ftpuser, ftppass)
except:
    exit ("Cannot connect")

f = open (locfile, "r")
try:
    ftp.delete (ftpfile)
except:
    pass

# ftp.sendcmd ("TYPE I")
# ftp.storlines("STOR %s" % ftpfile, f)
ftp.storbinary("STOR %s" % ftpfile, f)
f.close()

ftp.dir (ftpfile)
ftp.quit()

Qualche suggerimento?

È stato utile?

Soluzione

Non è necessario aprire il locfile in binario utilizzando rb?

f = open (locfile, "rb")

Altri suggerimenti

Beh, se si va sotto le proprietà del file in Windows o un *nix ambiente, noterete due dimensioni.Uno è la dimensione del settore, e uno è la dimensione reale.La dimensione del settore è il numero di settori in byte che vengono utilizzati sul vostro disco rigido.Che è perché due file non possono essere nello stesso settore con i più moderni sistemi di file, se il file si riempie la metà del settore, l'intero settore è contrassegnato come pieno.

Quindi potrebbe essere il confronto del settore, dimensione del file per le dimensioni effettive del file sul server FTP o viceversa.

Piccolo file di prendere il backup di un intero nodo sul filesystem di qualsiasi dimensione che è.

Il mio host tende a segnalare tutti i file di piccole dimensioni come 4kb in ftp, ma in una shell fornisce un'accurata dimensioni quindi potrebbe essere una 'caratteristica' comune client ftp.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top