我正在编写一个Python脚本,该脚本将上传一堆文件到FTP站点。为了检查文件是否已更改,我比较了文件大小。问题是,我上传的文件有\r\n行结尾,但通过FTP ( Linux机器的ascii模式)传输会转换为\n行结尾。显然,我在这个过程中丢失了很多字节,所以我不能再比较文件大小了。
我不确定在这里进行的最好的方法。是否在检查文件大小时将\r\n转换为\n?是否以二进制模式上传所有内容?停止比较文件大小?
发布于 2010-01-30 05:39:53
我不会根据文件大小来检查文件是否发生了更改。因为它是ascii文本,所以文件可能已经更改,但仍然具有完全相同的字节数。
发布于 2010-01-30 05:42:52
使用文件大小不是一个好主意,除非它们只在更改时才会增长(但通常不是这样,除非它们是日志文件或其他文件)。
一种选择是跟踪每个文件的校验和(通常使用md5sum)(也可以将校验和上传到ftp服务器)。如果校验和与主校验和文件中的校验和匹配,则没有任何更改,否则上载更改后的文件并更新该文件的md5sum。
https://stackoverflow.com/questions/2165326
复制相似问题