Я немного запутался, но напрямую открывать файл в запросе (впрочем, то же самое написано в официальном руководстве по запросам) не так уж и "безопасно".
Просто попробуй:
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)
Да, все будет хорошо, но:
os.rename(file_path, file_path)
И вы получите:
PermissionError:The process cannot access the file because it is being used by another process
Пожалуйста, поправьте меня, если я не прав, но кажется, что файл все еще открыт, и я не знаю, как его закрыть.
Вместо этого я использую:
import os
import requests
#let it be folder with files to upload
folder = "/home/user_folder/"
#dict for files
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)
#trying to rename uploaded files now
for files in os.listdir(folder):
os.rename("{folder}{name}".format(folder=folder, name=files), "{folder}{name}".format(folder=folder, name=files))
Теперь мы не получаем ошибок, поэтому я рекомендую использовать этот способ для загрузки нескольких файлов, иначе вы можете получить некоторые ошибки. Надеюсь, этот ответ поможет кому-нибудь и сэкономит бесценное время.
person
Mike Mint
schedule
29.06.2019