为什么 os.unlink() 在 Windows 上引发权限错误,而在 macOS 上则不然?

问题描述 投票:0回答:1

我是一个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 处理文件的方式,还是我刚刚错过的更简单的东西。

python windows opencv operating-system unlink
1个回答
0
投票

每个文档(强调我的):

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)
© www.soinside.com 2019 - 2024. All rights reserved.