Python ftplib 在将文件上传到 FTP 服务器期间向 txt 文件添加新行
Python ftplib add new line to txt file during upload file to FTP server
我使用以下代码以 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
请帮忙解决这个问题。
顺便说一句,如果使用二进制模式换行不要添加
您应该以二进制模式上传您的文件,这样它就不会受到服务器文本解释的影响。
变化:
ftp.storlines('STOR '+file_name, file)
至:
ftp.storbinary('STOR '+file_name, file)
我使用以下代码以 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
请帮忙解决这个问题。 顺便说一句,如果使用二进制模式换行不要添加
您应该以二进制模式上传您的文件,这样它就不会受到服务器文本解释的影响。
变化:
ftp.storlines('STOR '+file_name, file)
至:
ftp.storbinary('STOR '+file_name, file)