Python ftplib在将文件上传到FTP服务器的过程中向txt文件添加新行

时间:2018-09-26 04:10:45

标签: python ftplib

我使用以下代码以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

enter image description here

请帮助解决此问题。 顺便说一句,如果使用二进制模式换行不添加

1 个答案:

答案 0 :(得分:0)

您应该以二进制模式上传文件,以免受到服务器文本解释的影响。

更改:

ftp.storlines('STOR '+file_name, file)

收件人:

ftp.storbinary('STOR '+file_name, file)