Python ftplib добавляет новую строку в текстовый файл во время загрузки файла на FTP-сервер - PullRequest
0 голосов
/ 26 сентября 2018

Я использую следующий код для загрузки txt-файлов в режиме ASCII на 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была добавлена ​​новая строка в конце файла. локальные и удаленные экраны файлов

enter image description here

Пожалуйста, помогите решить эту проблему.Кстати, если использовать бинарный режим новой строки, не добавляйте

1 Ответ

0 голосов
/ 26 сентября 2018

Вы должны загрузить свой файл в двоичном режиме, чтобы он не подвергался интерпретации текста сервером.

Измените:

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

на:

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