FTP library error: got more than 8192 bytes
FTP library error: got more than 8192 bytes
Python 上传大小超过 8192 字节的文件时失败。而例外只有"got more than 8192 bytes"。有上传大文件的解决方案吗
try:
ftp = ftplib.FTP(str_ftp_server )
ftp.login(str_ftp_user, str_ftp_pass)
except Exception as e:
print('Connecting ftp server failed')
return False
try:
print('Uploading file ' + str_param_filename)
file_for_ftp_upload = open(str_param_filename, 'r')
ftp.storlines('STOR ' + str_param_filename, file_for_ftp_upload)
ftp.close()
file_for_ftp_upload.close()
print('File upload is successful.')
except Exception as e:
print('File upload failed !!!exception is here!!!')
print(e.args)
return False
return True
storlines
一次读取一个文本文件一行,8192是每行的最大大小。作为上传功能的核心,您可能最好使用:
with open(str_param_filename, 'rb') as ftpup:
ftp.storbinary('STOR ' + str_param_filename, ftpup)
ftp.close()
它以二进制形式读取和存储,一次一个块(与 8192 相同的默认值),但应该适用于任何大小的文件。
我有一个类似的问题并通过增加 ftplib 的 maxline 变量的值解决了它。您可以将其设置为您想要的任何整数值。它表示文件中每行的最大字符数。这会影响上传和下载。
根据 Alex Martelli 的回答,我建议在大多数情况下使用 ftp.storbinary
,但在我的情况下这不是一个选项(不是常态)。
ftplib.FTP.maxline = 16384 # This is double the default value
只需在开始文件传输之前随时调用该行即可。
Python 上传大小超过 8192 字节的文件时失败。而例外只有"got more than 8192 bytes"。有上传大文件的解决方案吗
try:
ftp = ftplib.FTP(str_ftp_server )
ftp.login(str_ftp_user, str_ftp_pass)
except Exception as e:
print('Connecting ftp server failed')
return False
try:
print('Uploading file ' + str_param_filename)
file_for_ftp_upload = open(str_param_filename, 'r')
ftp.storlines('STOR ' + str_param_filename, file_for_ftp_upload)
ftp.close()
file_for_ftp_upload.close()
print('File upload is successful.')
except Exception as e:
print('File upload failed !!!exception is here!!!')
print(e.args)
return False
return True
storlines
一次读取一个文本文件一行,8192是每行的最大大小。作为上传功能的核心,您可能最好使用:
with open(str_param_filename, 'rb') as ftpup:
ftp.storbinary('STOR ' + str_param_filename, ftpup)
ftp.close()
它以二进制形式读取和存储,一次一个块(与 8192 相同的默认值),但应该适用于任何大小的文件。
我有一个类似的问题并通过增加 ftplib 的 maxline 变量的值解决了它。您可以将其设置为您想要的任何整数值。它表示文件中每行的最大字符数。这会影响上传和下载。
根据 Alex Martelli 的回答,我建议在大多数情况下使用 ftp.storbinary
,但在我的情况下这不是一个选项(不是常态)。
ftplib.FTP.maxline = 16384 # This is double the default value
只需在开始文件传输之前随时调用该行即可。