gpt4 book ai didi

python - 如何打开一些无限的文件以便我可以在请求中发送它们?

转载 作者:行者123 更新时间:2023-12-01 09:25:02 26 4
gpt4 key购买 nike

我需要获取用户目录的内容并在请求中发送它们。不幸的是,我无法修改我发出请求的服务,因此我无法压缩所有文件并发送它,我必须发送所有文件。

文件总大小有限制,但文件数量没有限制。不幸的是,一旦我尝试打开太多文件,Python 就会出错:[Errno 24] Too much open files。这是我当前的代码:

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()

考虑到我的情况,有什么办法可以绕过这个打开文件限制吗?

最佳答案

您可以一次发送一个文件吗?或者可以分批发送?您可以在此处增加允许打开的文件数量:

IOError: [Errno 24] Too many open files:

但总的来说,这很挑剔,不推荐。

您可以批量发送您的请求,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()

这将一次批量发送 10 个文件。如果一次有效:

for file in all_files:
with open(file, "rb") as outfile:
requests.post(url, files=[outfile])

一次打开​​太多文件通常是不好的做法。

关于python - 如何打开一些无限的文件以便我可以在请求中发送它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com