Недавно я обнаружил модуль tempfile, который позволяет легко создавать временные файлы, используемые вашей программой Python.
Однако при попытке использовать этот модуль я обнаружил проблему: большинство модулей Python, которые манипулируют или создавать файлы, используйте путь к файлу (в виде строки) в качестве входных данных от пользователя (или программиста).
Это означает, что такой код вызовет ошибку:
import tempfile
with tempfile.NamedTemporaryFile(suffix=".jpg") as tempfileimg:
image = generate_random_image()
save_image(image, tempfileimg) # Type Error (expected path to file)
upload_image_to_cloud(tempfileimg) # Type Error (expected path to file)
# In this example, both `save_image` and `upload_image_to_cloud` functions
# expect to receive the path to the file and not the "opened file object".
Я попытался использовать tempfileimg.name
, чтобы получить путь к временному файлу в виде строки, но поскольку временные файлы находятся в специальной папке на машине, запись файлов обычными методами вызовет ожидание:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\MyUserName\\AppData\\Local\\Temp\\tmpvq81yj2v.jpg'
Как я могу решить эту проблему?
tempfileimg.name
? Ошибка отказа в разрешении является странной. - person Josh Karpel   schedule 28.11.2020name
не приводит к возникновению исключения, но вызывает его при попытке открыть файл. - person RealA10N   schedule 28.11.2020write
. Однако я не могу открыть файл извне и могу получить к нему доступ только с помощью экземпляра tempfile. - person RealA10N   schedule 28.11.2020