【问题标题】:"PermissionError: [Errno 13] Permission denied" within cmd, but works in PyCharmcmd中的“PermissionError:[Errno 13] Permission denied”,但在PyCharm中有效
【发布时间】:2020-04-26 02:08:23
【问题描述】:

我正在使用下面的代码将一个字典数组输出到一个 csv 文件中。在 PyCharm 中,它创建一个新文件或更新同名的现有文件。 从 .bat 文件运行时,它的工作方式如上。 当我安排 .bat 文件在 Windows 任务计划程序中运行时,它失败并显示: PermissionError:[Errno 13] 权限被拒绝:'test-25-Apr-2020.csv'

到目前为止我尝试过的事情:

  1. 更新了项目文件夹的安全权限,以便每个类型 的用户将所有权限设置为“允许”。
  2. 确认文件在写入时未打开。
  3. 创建了 .bat 的快捷方式并将其设置为以管理员身份运行,并在任务计划程序中引用它。
  4. 将项目文件夹从 D:\ 到 C:\ 正下方

.

import csv
import datetime

def downloadCSV(result, file):
    keys = result[0].keys()
    with open(file, 'w', newline='') as output_file:
        dict_writer = csv.DictWriter(output_file, keys)
        dict_writer.writeheader()
        dict_writer.writerows(result)

inputList = [
    {"test": "value1"},
    {"test": "value2"},
    {"test": "value3"},
    { "test": "value4"}
]

timeNow = datetime.datetime.now()
formattedTime = timeNow.strftime("%d") + "-" + timeNow.strftime("%b") + "-" + timeNow.strftime("%Y")
fileName = 'test-' + formattedTime + '.csv'

downloadCSV(inputList, fileName)

【问题讨论】:

  • 您是否以管理员身份运行 PyCharm?
  • 问题在于您的 TS 设置。您没有发布但已努力在代码中复制。
  • @GaneshSatpute 我的 PyCharm 没有以管理员身份运行。我希望上面列表中的 #1 和 #3 的组合能够解决任何权限问题。
  • @Mark 我不知道 TS 设置是什么,请您详细说明一下吗?
  • 任务计划程序设置。

标签: python cmd command-line


【解决方案1】:

对其进行了两项更改:

  1. 根据 Mark 的评论,我将此任务的任务计划程序设置更新为“常规”选项卡上的“以最高权限运行”。这修复了错误,但仍未创建文件。
  2. 我指定了一个文件创建路径:使用 open('C:/test/'+file, 'w', newline='') 作为 output_file: 这样就创建了文件!

【讨论】:

    【解决方案2】:

    我在使用任务计划程序时遇到了同样的问题。我尝试了 / 和 \ 和其他选项(以最高权限运行”但仍然有问题。对我有用的是 cd 进入 bat 文件中的目录。

    以前,我的 .bat 文件很简单:

    python "C:\path\to\some\directory\run.py"
    

    我将 .bat 文件更新为:

    cd "C:\path\to\some\directory"
    python run.py
    

    希望这可以帮助其他遇到此问题的人。

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 2019-07-31
      • 2016-08-17
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      相关资源
      最近更新 更多