문제

로컬 디렉토리 내에 있는 웹 서버를 업데이트하기 위해 PHP 스크립트를 만들었습니다.스크립트를 Python으로 마이그레이션하고 있습니다.대부분의 경우 잘 작동하지만 PUT 명령 후에는 파일 크기가 변경된 것처럼 보입니다.따라서 파일의 크기는 서버에 있는 파일의 크기와 다릅니다.

FTP 서버에서 파일을 다시 다운로드하면 CR/LF 표시만 달라집니다.동일한 스크립트가 업데이트할 파일의 크기를 비교하기 때문에 이는 나를 짜증나게 합니다.또한 의미가 있는 경우 스크립트는 ftp_put을 통해 PHP에서 완벽하게 작동합니다.

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()

어떤 제안이 있으십니까?

도움이 되었습니까?

해결책

다음을 사용하여 바이너리로 locfile을 열어야 합니까? rb?

f = open (locfile, "rb")

다른 팁

Windows 또는 *nix 환경에서 파일 속성으로 이동하면 두 가지 크기를 확인할 수 있습니다.하나는 섹터 크기이고 다른 하나는 실제 크기입니다.섹터 크기는 하드 디스크에서 사용되는 바이트 단위의 섹터 수입니다.이는 대부분의 최신 파일 시스템에서 두 파일이 동일한 섹터에 있을 수 없기 때문에 파일이 섹터의 ​​절반을 채우면 전체 섹터가 채워진 것으로 표시되기 때문입니다.

따라서 섹터 파일 크기를 FTP 서버의 실제 파일 크기와 비교하거나 그 반대로 비교할 수 있습니다.

작은 파일은 크기에 관계없이 파일 시스템의 전체 노드를 차지합니다.

내 호스트는 모든 작은 파일을 ftp에서 4kb로 보고하는 경향이 있지만 쉘에서는 정확한 크기를 제공하므로 ftp 클라이언트에 일반적인 '기능'일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top