我有点困惑,但直接在请求中打开文件(虽然官方的请求指南中也这么写)并不是很“安全”。请尝试:
最初的回答:
import os
import requests
file_path = "/home/user_folder/somefile.txt"
files = {'somefile': open(file_path, 'rb')}
r = requests.post('http://httpbin.org/post', files=files)
Yes, all will be ok, but:
os.rename(file_path, file_path)
你将会得到:
最初的回答
PermissionError:The process cannot access the file because it is being used by another process
如果我说错了,请纠正我,但似乎文件仍然处于打开状态,我不知道任何关闭它的方法。
相反,我使用以下方法:
Original Answer翻译成"最初的回答"
import os
import requests
folder = "/home/user_folder/"
upload_list = []
for files in os.listdir(folder):
with open("{folder}{name}".format(folder=folder, name=files), "rb") as data:
upload_list.append(files, data.read())
r = request.post("https://httpbin.org/post", files=upload_list)
for files in os.listdir(folder):
os.rename("{folder}{name}".format(folder=folder, name=files), "{folder}{name}".format(folder=folder, name=files))
现在我们不会出现错误,所以我建议使用这种方式上传多个文件,否则可能会出现一些错误。
希望这个答案能帮助到某人并节省宝贵的时间。
原始答案:最初的回答