【问题标题】:Invalid literal for int() with base 16基数为 16 的 int() 文字无效
【发布时间】:2019-07-19 03:19:35
【问题描述】:

下面的代码有问题。我正在运行 python 脚本来运行 exe 并将参数传递给它。我收到以下错误: 以 16 为基数的 int() 的 ValueError 无效文字:

但是,如果我在 0 之后和双引号之前添加一个额外的分号(我不需要),它将起作用。我的字符串有问题吗?

program="C:\Program Files (x86)\program.exe"
args='"21022019;A0A1A2A3A4A5A6A7;B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;1;1982;0"-e fixed -k aa11bb22cc33dd44ee55ff6600112233 -f jf_Creds_python.hex'
subprocess.call([program,args])

这是完整的错误:

Traceback (most recent call last):
  File "<string>", line 249, in <module>
    File "<string>", line 53, in main 
ValueError: invalid literal for int() with base 16: '"21022019' 

【问题讨论】:

  • 在你的问题中你错过了一个结束单引号'
  • 我上面说的双引号是在-efixed之前
  • 抱歉复制/粘贴错误,我的代码中有单引号 .hex
  • 这是完整的错误:回溯(最近一次调用最后一次):文件“”,第 249 行,在 文件“”,第 53 行,在 main ValueError 中:基数为 16 的 int() 的无效文字:'"21022019'
  • 用该信息更新问题,不要将其作为评论包含在内

标签: python string subprocess


【解决方案1】:

我找到了解决办法,但不是很明白。

program="C:\Program Files (x86)\program.exe"
args='"21022019;A0A1A2A3A4A5A6A7;B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF;1;1982;0"-e fixed -k aa11bb22cc33dd44ee55ff6600112233 -f jf_Creds_python.hex'
subprocess.call([program,{args}])

如果我在 args 周围放置花括号,它将成功。它现在可以工作,但我不完全确定它是如何工作的,如果有人可以解释它会很棒吗?

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2019-02-16
    • 2020-05-27
    • 2021-09-17
    • 2013-05-31
    • 2018-03-13
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多