Frage

Ich habe ein PHP-Skript erstellt, um einen Webserver zu aktualisieren, der in einem lokalen Verzeichnis aktiv ist.Ich migriere das Skript nach Python.Es funktioniert größtenteils gut, aber nach einem PUT-Befehl scheint sich die Größe der Datei zu ändern.Daher unterscheidet sich die Größe der Datei von der Datei auf dem Server.

Sobald ich die Datei erneut vom FTP-Server herunterlade, ist der einzige Unterschied die CR/LF-Markierung.Das ärgert mich, weil dasselbe Skript die Größe der zu aktualisierenden Dateien vergleicht.Und falls es etwas bedeutet: Das Skript funktioniert perfekt in PHP über 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()

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Müssen Sie die Loc-Datei im Binärformat öffnen? rb?

f = open (locfile, "rb")

Andere Tipps

Wenn Sie die Eigenschaften Ihrer Datei in Windows oder einer *nix-Umgebung aufrufen, werden Sie zwei Größen bemerken.Eines ist die Sektorgröße und eines ist die tatsächliche Größe.Die Sektorgröße ist die Anzahl der Sektoren in Bytes, die auf Ihrer Festplatte belegt sind.Das liegt daran, dass sich bei den meisten modernen Dateisystemen nicht zwei Dateien im selben Sektor befinden können. Wenn Ihre Datei also die Hälfte des Sektors ausfüllt, wird der gesamte Sektor als gefüllt markiert.

Möglicherweise vergleichen Sie also die Größe der Sektordatei mit der tatsächlichen Dateigröße auf dem FTP-Server oder umgekehrt.

Kleine Dateien nehmen einen ganzen Knoten im Dateisystem ein, unabhängig von ihrer Größe.

Mein Host tendiert dazu, alle kleinen Dateien in FTP als 4 KB zu melden, gibt aber in einer Shell eine genaue Größe an, sodass es sich möglicherweise um eine „Funktion“ handelt, die bei FTP-Clients üblich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top