【问题标题】:Permission error when unzipping files that are password protected解压缩受密码保护的文件时出现权限错误
【发布时间】:2020-07-26 06:01:42
【问题描述】:

我正在尝试解压缩一些受密码保护的文件,但我不断收到一些权限错误。我尝试以管理员身份运行 vscode 执行此操作,但仍然遇到相同的错误。

代码如下:

input_file = ".\\pa-dirty-price-crawler\\folders"

import zipfile
with zipfile.ZipFile(input_file, 'r') as zip_ref:
    zip_ref.extractall(input_file, pwd=b'qpsqpwsr')

这是错误:

Traceback (most recent call last):
  File "c:/Users/usr/workspace/pa-dirty-price-crawler/src/outlook.py", line 23, in <module>
    with zipfile.ZipFile(input_file, 'r') as zip_ref:
  File "C:\ProgramData\Anaconda3\lib\zipfile.py", line 1240, in __init__
    self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: '.\\pa-dirty-price-crawler\\folders'

我不知道是否有其他库可以执行相同的操作,但如果有人对修复此问题有任何建议,我将不胜感激。

编辑:

当我尝试这样指定整个文件路径名时:

input_file = "C:\\Users\\usr\\workspace\\pa-dirty-price-crawler\\folders"

import zipfile
with zipfile.ZipFile(input_file, 'r') as zip_ref:
    zip_ref.extractall(pwd=b'qpsqpwsr')

我仍然收到此错误:

Traceback (most recent call last):
  File "c:/Users/usr/workspace/pa-dirty-price-crawler/src/outlook.py", line 23, in <module>
    with zipfile.ZipFile(input_file, 'r') as zip_ref:
  File "C:\ProgramData\Anaconda3\lib\zipfile.py", line 1240, in __init__
    self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\usr\\workspace\\pa-dirty-price-crawler\\folders'

【问题讨论】:

  • 您的示例代码看起来像您的输入是一个目录而不是一个 zip 文件。然后你试图解压到同一个目录。你确定你的例子是正确的吗?
  • @PatrickArtner 是的,当我手动输入该密码时,该字符串有效。
  • @AlastairMcCormack 我不确定它是否正确我应该暂时不保留提取文件的路径吗?
  • @AlastairMcCormack 你能看到我的编辑吗?

标签: python windows extract unzip zipfile


【解决方案1】:

看起来您正在传递一个目录作为输入。这是可能的问题,而不是 zip 受密码保护。

要提取 zip 文件,zipfile.ZipFile 将 zip 文件作为输入而不是目录。

因此,您的代码需要两个变量:一个输入 zip file 和一个 output 目录:

input_file = r".\pa-dirty-price-crawler\folders\myzipfile.zip"
output_directory = r".\pa-dirty-price-crawler\folders"

import zipfile
with zipfile.ZipFile(input_file, 'r') as zip_ref:
    zip_ref.extractall(output_directory, pwd=b'qpsqpwsr')

* 注意r"string" 的使用,这有助于避免所有反斜杠

【讨论】:

  • 那行得通,比你好多了。尽管可以对多个 zip 文件执行此操作,而不是在 input_file 路径中指定 \myzipfile.zip
  • 我希望我的问题在那里有意义
  • 使用Path.glob("directory/*.zip")for 循环
猜你喜欢
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 2023-01-30
  • 2016-10-06
  • 1970-01-01
相关资源
最近更新 更多