pablog
Creé un script PHP para actualizar un servidor web que está activo dentro de un directorio local. Estoy migrando el script a Python. Funciona bien en su mayor parte, pero después de un comando PUT, el tamaño del archivo parece cambiar. Por lo tanto, el tamaño del archivo es diferente al del archivo en el servidor.
Una vez que descargo nuevamente el archivo del servidor FTP, la única diferencia es la marca CR/LF. Esto me molesta porque el mismo script está comparando el tamaño de los archivos para actualizar. Además, por si te sirve de algo, el script funciona perfectamente en 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()
¿Alguna sugerencia?
david sikes
¿Necesita abrir el archivo loc en binario usando rb
?
f = open (locfile, "rb")
-
Muchas gracias, este era el tiro entre los ojos que necesitaba, pasé todo el fin de semana golpeándome la cabeza contra la pared por esto. Esto también se aplica al escenario inverso, transfiriendo desde ftp.
– snarkyname77
23 de noviembre de 2009 a las 14:16
-
@PabloG ¿De verdad hiciste ese comentario hace un momento, o he sido absorbido por un túnel del tiempo?
– David Sykes
25 de junio de 2010 a las 13:00
Bueno, si revisa las propiedades de su archivo en Windows o en un entorno * nix, notará dos tamaños. Uno es el tamaño del sector y el otro es el tamaño real. El tamaño del sector es el número de sectores en bytes que se utilizan en su disco duro. Esto se debe a que dos archivos no pueden estar en el mismo sector con la mayoría de los sistemas de archivos modernos, por lo que si su archivo llena la mitad del sector, todo el sector se marca como lleno.
Por lo tanto, podría estar comparando el tamaño del archivo de sector con el tamaño real del archivo en el servidor FTP o viceversa.
chispas
Los archivos pequeños ocupan un nodo completo en el sistema de archivos, sea cual sea su tamaño.
Mi host tiende a informar todos los archivos pequeños como 4 KB en ftp, pero proporciona un tamaño exacto en un shell, por lo que podría ser una ‘característica’ común a los clientes de ftp.