使用 python .exe 程序访问文件的权限被拒绝

Permission Denied to access files using python .exe program

我创建了一个简单的程序,通过下载一个 zip 文件并使用 Python 访问其内容来从 Internet 收集一些数据。

程序下载 zip 文件并使用 ZipFile.extractall() 将其解压缩。然后我使用 Python open() 方法读取提取的文件。

我需要每天收集数据,所以我把原程序的快捷方式粘贴在启动目录下,这样每次启动笔记本电脑,程序就会开始执行。

在运行使用python IDLE 运行程序时,程序运行运行完美,没有错误,如图:

但是当程序在启动时自动执行时,程序是运行作为.exe文件,并给我权限被拒绝的错误:

使用 print() 语句我已经将产生错误的代码逼入绝境:

zip_file = 'C:/Users/Tirth/Downloads/'+'cm'+day+month_name+year+'bhav.csv.zip'

with ZipFile(zip_file, 'r') as zf:
    zf.extractall()
   
file_name = 'C:/Users/Tirth/Documents/Programming/pyprojects/'+'cm'+day+month_name+year+'bhav.csv'
csv = open(file_name)

问题似乎发生在 zf.extractall(),但我想访问提取文件的权限已被拒绝。

而且您还可以看到,我正在尝试在与错误中显示的目录 (C:/Users/Tirth/Documents/Programming/pyprojects) 不同的目录 (C:/Users/Tirth/Documents/Programming/pyprojects) 中打开提取的文件 (C:/Windows/system32)

所以这就是困境。为什么 python.exe 文件的权限被拒绝,但使用 Python IDLE 执行时却没有,我该如何解决这个问题?

extractall() 解压文件到当前工作目录,不一定是你解压的存档文件所在的目录。

您可以使用

确定当前工作目录
import os
print(os.getcwd())

how can I fix this issue?

将要提取的路径作为参数传递给 extractall():

zf.extractall(path='C:/Users/Tirth/Documents/Programming/pyprojects')