为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2021-03-22 10:46:44
我创建了一个PHP脚本来更新位于本地目录中的Web服务器。我正在将该脚本迁移到Python中。它在大多数情况下都可以正常工作,但是在执行PUT命令后,文件的大小似乎会发生变化。因此,文件的大小与服务器上文件的大小不同。一旦我再次从FTP服务器下载文件,唯一的区别就是CR / LF标记。这让我很烦,因为同一脚本正在比较要更新的文件的大小。另外,万一它有任何意义,该脚本可以在PHPvíaftp_put中完美运行。from ftplib import FTPftpserver = "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()有什么建议?
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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

f = open (locfile, "rb")


查看完整回答
反对 回复 2021-03-22
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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

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


查看完整回答
反对 回复 2021-03-22
?
POPMUISE

TA贡献1765条经验 获得超5个赞

无论文件大小如何,小文件都会占据文件系统上的整个节点。

我的主机倾向于将所有小文件报告为ftp中的4KB,但在外壳中提供了准确的大小,因此它可能是ftp客户端共有的“功能”。


查看完整回答
反对 回复 2021-03-22
  • 3 回答
  • 0 关注
  • 363 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信