我使用以下代码以ASCII模式将txt文件上传到FTP服务器
import glob
import os
import hashlib
from ftplib import FTP
server = '1.1.1.1'
login = 'user'
password = 'password'
path = './test_files/'
file_mask = '*.txt'
def upload_to_ftp(srv, uname, pwd, file_name):
ftp = FTP(srv, uname, pwd)
ftp.cwd('Pava')
file = open(path+file_name, 'rb')
ftp.storlines('STOR '+file_name, file)
size = ftp.size(file_name)
ftp.close()
file.close()
print (size)
def local_size_check(file_name):
file_size = os.stat(path+file_name)
print (file_size.st_size)
file_to_upload = glob.glob1(path, file_mask)
for i in file_to_upload:
try:
os.rename(path+i, path+i)
except OSError as e:
print ('Access-error on file ' + i + ' ! \n' + str(e))
else:
upload_to_ftp(server, login, password, i)
local_size_check(i)
这两个函数的输出为: 78 76 然后,我从ftp下载了文件,发现在FTP传输过程中在文件末尾添加了新行。 local and remote file screens
请帮助解决此问题。 顺便说一句,如果使用二进制模式换行不添加
答案 0 :(得分:0)
您应该以二进制模式上传文件,以免受到服务器文本解释的影响。
更改:
ftp.storlines('STOR '+file_name, file)
收件人:
ftp.storbinary('STOR '+file_name, file)