我是一个Python初学者,当我得到一个
os.unlink()
时,我正在用cv2和Permission Error
做一些事情。
这就像代码的整体结构。
import cv2
import numpy as np
import tempfile
import os
import time
# Function to create and delete a temporary image file
def create_and_delete_temp_image():
# Create a black image
image = np.zeros((100, 100, 3), np.uint8)
# Create a temporary file
with tempfile.NamedTemporaryFile(delete=False, suffix='.jpg') as tmp_file:
temp_filename = tmp_file.name
# Save the image to the temporary file
cv2.imwrite(temp_filename, image)
img = cv2.imread(temp_filename)
#cv2.imshow(temp_filename,img)
#cv2.waitKey(10000)
#cv2.destroyAllWindows()
os.unlink(temp_filename)
create_and_delete_temp_image()
我认为这是因为我在 with 子句中有
os.unlink()
行,但在我朋友的 mac 上,即使该行缩进,代码也运行良好。我错过了什么吗?我现在知道如何让代码工作,但这只是 Windows 处理文件的方式,还是我刚刚错过的更简单的东西。
每个文档(强调我的):
os.取消链接(路径,*,dir_fd =无)
相同
...该函数在语义上与 remove()os.删除(路径,*,dir_fd =无)
... 在 Windows 上,尝试删除正在使用的文件会导致引发异常;在 Unix 上,目录项将被删除,但分配给该文件的存储空间在原始文件不再使用之前不可用。
只需使用
delete=True
(默认),它就可以在两种操作系统上运行:
import tempfile
with tempfile.NamedTemporaryFile(suffix='.tmp') as tmp_file:
print(tmp_file.name)