【问题标题】:Getting 'TypeError, not enough arguments for format string' while writing to file?写入文件时出现“TypeError,格式字符串的参数不足”?
【发布时间】:2014-03-27 00:41:41
【问题描述】:

我正在尝试创建一个从输出中获取数字的代码并创建一个生成文本文件 用那个数字,然后在那个文件中用那个数字写一些行..

我尝试使用代码:

   for i in Nums:
    sh1 = '%d.txt' %i
    target = open (sh1, 'w') ## a will append, w will over-write
    text = '%d * 0\n %d *1'
    target.write(text %(i))
    target.close()

但我遇到了这个错误 TypeError: not enough arguments for format string 。 我不明白这个错误为什么会显示给我。我进行了搜索,但解决方案不适用于我的代码。

我需要从代码中创建文本文件,就像我输入数字 1 一样。创建 txt 文件名 1.txt 并将这些行写入其中。

    1 * 0
    1 * 1
    1 * 2
    1 * 3

有什么帮助吗? 提前致谢

【问题讨论】:

  • 提示:first 搜索结果实际上很有帮助。

标签: python loops text


【解决方案1】:

你为什么不用str.format

for i in Nums:
    target = open('{}.txt'.format(i), 'w')
    target.write('{0} * 0\n{0} * 1\n{0} * 2\n{0} * 3\n'.format(i))
    target.close()

'%d.txt' %i 字符串格式的使用正慢慢变得越来越少,这可能是因为它有点混淆了可用性。 str.format 更简洁一些,并为您提供相同的功能。您只需要指定{} 来表示参数的去向。您可以在括号内进一步指定参数的索引,{0},或{1}

【讨论】:

  • 对不起,我不知道这个功能
【解决方案2】:

问题在于表达式

text %(i)

text 指的是格式字符串'%d * 0\n %d *1',其中包含两个%d 占位符,但您只传递了一个参数i。你需要做类似的事情

text % (i, j)

例如,text % (4, 5) 会给你

4 * 0\n 5 *1

顺便说一句,在用于格式化的% 运算符之前和之后都包含空格是标准的。如果你只传递一个参数给格式化操作并且你想使用一个元组,你需要使用像(i,)这样的语法,而不仅仅是(i)。您可以阅读有关该规则的更多信息here

【讨论】:

  • 我的意思是我需要为所有操作传递参数,我尝试使用逗号但同样的问题发生了?
猜你喜欢
  • 1970-01-01
  • 2012-06-24
  • 2020-10-17
  • 2012-06-11
  • 2019-01-17
  • 2016-01-16
  • 2014-08-06
  • 2017-12-18
相关资源
最近更新 更多