这个.write命令有什么问题?

时间:2013-11-19 12:05:15

标签: python

我使用Learnpythonthehardway.org,在练习16中,研究演练说如下: “使用字符串,格式和转义符只用一个target.write()命令而不是六个打印第1行,第2行和第3行。”

所以,我改变了:

target.write(line1, "\n", line2, "\n" line3, "\n")
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

分为:

target.write("%s \n  %s \n %s \n") %(line1, line2, line3) 

有谁可以解释我做错了什么?

3 个答案:

答案 0 :(得分:3)

file.write()只接受一个参数,而不是更多。只有print()函数可以为您处理多个参数。

您需要将字符串格式化为一个参数,而不是尝试“格式化”target.write()函数的返回值:

target.write("%s\n%s\n%s\n" % (line1, line2, line3))

或使用print()函数添加换行符和分隔符:

print(line1, line2, line3, sep='\n', file=target)

print()因为函数是Python 3中的默认函数;如果您使用的是Python 2,则可以通过添加以下内容将print语句转换为print()函数:

from __future__ import print_function

在模块的开头。

请注意,原始练习代码会将行写入文件,而中间不会有空格。

答案 1 :(得分:3)

你必须这样做

target.write("%s \n  %s \n %s \n" % (line1, line2, line3))

最好使用字符串的format方法。

target.write("{} \n  {} \n {} \n".format(line1, line2, line3))

修改

您可能希望查看this question,了解为什么format优于%格式

答案 2 :(得分:0)

在字符串上应用%运算符。

target.write("%s \n  %s \n %s \n" % (line1, line2, line3))

注意:对于更复杂的字符串格式,请在字符串上使用format方法。