Python - 如何使用%s修改文本输出?

时间:2014-07-15 15:14:26

标签: python string

非常直接给你们,但你们如何修改%s的输出值?

print "Successfully created the file: %s" % iFile + '.txt'

我尝试使用()' s,{}' s,但没有任何效果?

iFile是文件的名称,我希望它在显示时以.txt显示。

编辑:

我得到输出Successfully created the file: <open file 'test', mode 'rb' at 0x14cef60>.txt

3 个答案:

答案 0 :(得分:7)

使用str.format(*args, **kwargs

"Successfully created the file: {0}.txt".format(iFile)

示例:

In [1]: iFile = "foo"

In [2]: "Successfully created the file: {0}.txt".format(iFile)
Out[2]: 'Successfully created the file: foo.txt'

修改

由于您似乎有文件而不是文件名,因此您可以这样做:

In [4]: iFile = open("/tmp/foo.txt", "w")

In [5]: "Successfully created the file: {0}.txt".format(iFile)
Out[5]: "Successfully created the file: <_io.TextIOWrapper name='/tmp/foo.txt' mode='w' encoding='UTF-8'>.txt"

In [6]: "Successfully created the file: {0}.txt".format(iFile.name)
Out[6]: 'Successfully created the file: /tmp/foo.txt.txt'

请注意,现在输出为foo.txt.txt,并带有 double 扩展名。如果您不想这样,因为该文件的名称已经是foo.txt,那么您就不应该打印其他扩展名。


使用%是格式化字符串的旧方法。当前Python tutorial explains format in detail

答案 1 :(得分:4)

问题是你没有传递一个带有文件名的字符串 - 你传递的是一个文件句柄对象,这是完全不同的。要从文件句柄中获取名称,请使用iFile.name

print "Successfully created the file: %s" % iFile.name + '.txt'

这将打印您正在寻找的内容。

答案 2 :(得分:-1)

您可以尝试以下代码。我尝试使用Python shell,它可以工作。我想你只是错过了括号。

print "Successfully created the file: %s.txt" % iFile

print "Successfully created the file: %s" % (iFile + '.txt')