【问题标题】:TypeError: not enough arguments for format string - Python Formatting IssueTypeError:格式字符串的参数不足 - Python 格式化问题
【发布时间】:2020-03-10 23:24:36
【问题描述】:

我正在尝试从 python 脚本文件 (myscipt.py) 运行 shell 命令。命令是

os.system('For /R "D:\SVN\fido\" %G IN (*.so) do "python timeout.py %G %s" ' %l)

此命令将递归搜索 D:\SVN\fido\ 下的所有.so 文件,每个找到的.so 文件将成为python 脚本 timeout.py 的第一个参数%G。我需要将一个整数值作为第二个参数传递给这个 timeout.py 文件,为此我试图运行上面显示的命令。

l 的值是一个整数值,我需要将此值作为该 timeout.py 文件的第二个参数传递。当我运行此命令时,我收到“TypeError:格式字符串的参数不足”错误。

有什么建议吗?这应该是python格式问题。根据我的说法,%s 应该替换为l 的整数值,但我不知道它为什么会出错。下面是我正在使用的 myscript.py 文件。

import sys
import os
l=int(23410000)

print l


os.system('For /R "D:\SVN\fido\" %G IN (*.so) do "python timeout.py %G %s" ' %l)

【问题讨论】:

  • 我想你的意思是 %G 是你发送到操作系统的命令的一部分。在这里,python 会“认为”您想在每个 % 中插入一个值,因此是 3 个值。它只找到一个。您可能应该在 %G 中使用 %。

标签: python cmd


【解决方案1】:

根据错误消息,我的猜测是 python 解释器认为这个格式字符串应该接收更多参数,因为%G 看起来像一个占位符。

修复它:将每个%G替换为%%G,%% 将被解释为百分号的文字表示,而不是占位符前缀。

仅供参考:要替换 int,您通常会使用 %d(和 %f 用于浮点值和所有细节 -> string formating 101

【讨论】:

  • 是的,它现在可以工作了。 %%G 在这里是正确的选择。谢谢
猜你喜欢
  • 2012-06-24
  • 2018-06-07
  • 1970-01-01
  • 2020-10-17
  • 2012-06-11
  • 2019-01-17
  • 2021-04-01
  • 2017-09-28
相关资源
最近更新 更多