Python 我如何打开一些无限的文件,以便在请求中发送它们?
我需要获取用户目录的内容并在请求中发送它们。不幸的是,我无法修改我请求的服务,因此我无法压缩所有文件并发送,我必须发送所有文件 对文件的总大小有限制,但对文件的大小没有限制。不幸的是,一旦我尝试打开太多文件,Python就会出错:Python 我如何打开一些无限的文件,以便在请求中发送它们?,python,Python,我需要获取用户目录的内容并在请求中发送它们。不幸的是,我无法修改我请求的服务,因此我无法压缩所有文件并发送,我必须发送所有文件 对文件的总大小有限制,但对文件的大小没有限制。不幸的是,一旦我尝试打开太多文件,Python就会出错:[Errno 24]打开的文件太多。以下是我当前的代码: files_to_send = [] files_to_close = [] for file_path in all_files: file_obj = open(file_path, "rb")
[Errno 24]打开的文件太多。以下是我当前的代码:
files_to_send = []
files_to_close = []
for file_path in all_files:
file_obj = open(file_path, "rb")
files_to_send.append(("files", (file_path, file_obj)))
files_to_close.append(file_obj)
requests.post(url, files=files_to_send)
for file_to_close in files_to_close:
file_to_close.close()
鉴于我的情况,有没有办法绕过这个打开文件的限制?你能一次发送一个文件吗?或者可以分批发送?您可以在此处增加允许打开的文件数:
但总的来说,这很挑剔,不推荐
您可以批量发送请求,ala:
BATCH_SIZE = 10 # Just an example batch size
while len(all_files) > 0:
files_to_send = []
while len(files_to_send) < BATCH_SIZE:
files_to_send.append(all_files.pop())
file_obj = open(file_path, "rb")
requests.post(url, files=files_to_send)
for f in files_to_send:
f.close()
一次打开太多文件通常是不好的做法
for file in all_files:
with open(file, "rb") as outfile:
requests.post(url, files=[outfile])