gpt4 book ai didi

python 临时文件| NamedTemporaryFile 不能使用生成的临时文件

转载 作者:行者123 更新时间:2023-12-05 06:03:09 24 4
gpt4 key购买 nike

我想加载临时文件进行更改或者只是能够将它上传到某个地方,当我尝试这样做时 - 它会抛出一个错误,如下所示

我已将权限设置为 w+ - 理想情况下应该允许我读写,不确定我在这里遗漏了什么 - 任何帮助将不胜感激 - 谢谢

>>> from openpyxl import load_workbook
>>> from tempfile import NamedTemporaryFile
>>> import os
>>> with NamedTemporaryFile(suffix=".xlsx", mode='w+', delete=True) as tmp:
... temp_path = tmp.name
... os.path.exists(temp_path)
... wb = load_workbook(temp_path)
...
True
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "C:\Users\my_name\VS_PROJECTS\.venv\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
reader = ExcelReader(filename, read_only, keep_vba,
File "C:\Users\my_name\VS_PROJECTS\.venv\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__
self.archive = _validate_archive(fn)
File "C:\Users\my_name\VS_PROJECTS\.venv\lib\site-packages\openpyxl\reader\excel.py", line 96, in _validate_archive
archive = ZipFile(filename, 'r')
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2288.0_x64__qbz5n2kfra8p0\lib\zipfile.py", line 1251, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\my_name\\AppData\\Local\\Temp\\tmp5dsrqegj.xlsx'

最佳答案

显然,您使用的是 Windows。

在 Windows 上,当 O_TEMPORARY 文件仍处于打开状态时,您无法打开它的另一个句柄(参见例如 https://github.com/bravoserver/bravo/issues/111https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFilehttps://bugs.python.org/issue14243)。

您需要使用 delete=False 并手动清理,例如

try:
tmp = NamedTemporaryFile(suffix=".xlsx", mode='w+', delete=False)
tmp.close()
temp_name = tmp.name
os.path.exists(temp_path)
wb = load_workbook(temp_path)
finally:
try:
os.unlink(temp_name)
except Exception:
pass

关于 python 临时文件| NamedTemporaryFile 不能使用生成的临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66744497/

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