我在我们的一个CI脚本中看到了一个错误,在python脚本中尝试open
一个文件失败,错误为[Errno 13] Permission denied
(这是在Windows机器上)
我在想,这怎么可能,鉴于现在的情况:
首先,我们在后台启动一个进程,它负责生成这个文件。它首先创建一个临时文件,向其中写入所需的数据,然后将其重命名为最终名称(即,在试图打开时遇到权限错误的名称)。为了重命名文件,后台进程调用_wrename
python脚本在启动此过程后,将等待通过在路径上调用os.path.exists
生成文件,直到返回true。
当它知道文件存在后,它试图打开文件(简单地使用open(path)
),我们得到权限错误。
我看不出在创建此文件后有什么可能会更改其权限。
我唯一的想法是,当python脚本试图打开文件时,重命名仍在进行中,因此权限问题是由“共享冲突”引起的,这似乎可以表现为权限问题?
但我的印象是,重命名文件应该是原子的??这是发生在本地驱动器上(文件留在同一个文件夹中,只是名称发生了变化)。
不幸的是,我只见过这个错误一次,而且没有任何方法来重现它。
1条答案
按热度按时间pdkcd3nj1#
尝试使用sudo运行python文件:
或者在Windows中以管理员身份运行控制台/IDE。