【问题标题】:Permission Denied to access files using python .exe program使用 python .exe 程序访问文件的权限被拒绝
【发布时间】:2021-08-11 20:00:12
【问题描述】:

我创建了一个简单的程序,通过下载一个 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:/Windows/system32) 不同的目录 (C:/Users/Tirth/Documents/Programming/pyprojects) 中打开提取的文件

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

【问题讨论】:

  • 您所说的 python.exe 是什么意思,您是以 .exe 还是 .py 运行脚本,另一个问题是图像中显示的错误中的 .csv 文件是什么?
  • 正如我所提到的,Python IDLE 将它们作为 .py 文件执行,但程序在启动时作为 .exe 文件运行。您可以在图片中的窗口顶部看到它。 .csv 文件将是存储在与程序相同目录中的提取文件。这就是我要访问的内容。

标签: python zipfile


【解决方案1】:

extractall() 将文件提取到当前工作目录,该目录不一定是您要提取的存档文件所在的目录。

您可以通过

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

我该如何解决这个问题?

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

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

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 2014-08-10
    • 2018-01-09
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多