将文件复制到 FTP 服务器后的文件大小差异

2022-08-30 11:13:57

我创建了一个PHP脚本来更新本地目录中的Web服务器。我正在将脚本迁移到Python中。它在大多数情况下工作正常,但是在PUT命令之后,文件的大小似乎发生了变化。因此,文件的大小与服务器上文件的大小不同。

一旦我从FTP服务器再次下载文件,唯一的区别是CR / LF标记。这让我很烦恼,因为同一脚本正在比较要更新的文件的大小。此外,如果它意味着什么,脚本在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()

有什么建议吗?


答案 1

是否需要使用 以二进制文件打开 locfile?rb

f = open (locfile, "rb")

答案 2

好吧,如果您在Windows或* nix环境中查看文件的属性,您会注意到两种大小。一个是扇区大小,一个是实际大小。扇区大小是硬盘上用完的扇区数(以字节为单位)。这是因为对于大多数现代文件系统,两个文件不能位于同一扇区中,因此,如果文件填满了扇区的一半,则整个扇区将标记为已填充。

因此,您可能会将扇区文件大小与FTP服务器上的实际文件大小进行比较,反之亦然。


推荐