【问题标题】:Command returned non-zero exit status 9命令返回非零退出状态 9
【发布时间】:2019-11-28 16:42:49
【问题描述】:

我使用的是 Windows 10。 我编写了下面的代码来自动备份关键文件。 它是作为 ms-dos 批处理文件的一部分启动的 python 模块的一部分。

当脚本到达第 3 节中显示的代码时,它会返回一条神秘消息: 命令 '['WinRAR.exe', (...)] 返回非零退出状态 9。

无法进一步了解根本原因以及“退出状态 9”背后的原因。

在检查子流程文档以查找此“退出状态 9”的任何可能的根本原因后,我查看了 Stack,最后,我用谷歌搜索了它。 我无法使用任何东西来了解要调查的内容。

如果 FileName1 不在 Dropbox_archives 中: print("正在压缩"+FileName1) 尝试: subprocess.check_call([“WinRAR.exe”,“U”,“-ibck”,“-r”,“-s”,“-t”,“-inul”,“-m5”,“-rr3P”, "-y", "-pPwd00", "F:\10.Summaries\"+FileName1, "C:\Users\JCF\Dropbox\*.*"])

    except subprocess.CalledProcessError as err:
        print(err)

此代码应创建一个名称为 (FileName1) 的 winrar 存档,其中包含存档的创建日期。

由于 try / except 包装器,我在命令提示符窗口中收到消息。

【问题讨论】:

    标签: python-3.x subprocess


    【解决方案1】:

    错误代码由 WinRAR 返回。它与您的 Python 解决方案没有直接关系(但可以间接相关)。搜索代码含义时,可以发现:

    9   File create error.
    

    (在https://chmlib.com/WinRAR/html/HELPExitCodes.htm 找到。)尝试从命令行运行完全相同的 WindRAR 命令。原因可能更明显。

    【讨论】:

    • 短消息首先解释发生了什么(感谢上面的提示,我可以找到答案):我使用 Windows 调度程序让 python 脚本在到期日自动启动。由于进程以非常安静的模式运行,我以为进程没有启动,但实际上它实际上是在后台运行。因此,当我尝试手动启动它时,后台和手动任务与此代码相互冲突,因为两者都试图创建相同的文件。如果有人遇到同样的(非平凡的)问题,我希望这种经验可能会有所帮助。
    【解决方案2】:

    同样的脚本现在无需任何修改即可运行。这个“退出状态 9”可能是由于某些 Windows 上下文状态,例如可用进程或内存的数量。 不幸的是,我没有找到任何关于这个数字“9”背后的文档,也没有找到关于如何检索从命令行返回的实际消息而不是这个退出状态的任何提示。

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 2021-02-15
      • 2019-02-09
      • 2021-01-11
      • 2014-04-09
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多