我想创建一个字符串缓冲区来进行大量的处理、格式化,最后使用Python中的C样式sprintf
功能将缓冲区写入文本文件。由于有条件语句,我不能直接将它们写入文件。
例如伪代码:
sprintf(buf,"A = %d\n , B= %s\n",A,B)
/* some processing */
sprint(buf,"C=%d\n",c)
....
...
fprintf(file,buf)
所以在输出文件中我们有这样的o/p:
A= foo B= bar
C= ded
etc...
编辑,澄清我的问题:buf
是一个大缓冲区,包含所有这些使用sprintf格式化的字符串。
从您的示例来看,buf
将只包含当前值,而不包含旧值。
e、 g first in buf
我写的A= something ,B= something
后来C= something
被附加在相同的buf
中,但是在您的Python答案中buf
只包含最后一个值,这不是我想要的-我想要buf
拥有我从一开始就做的所有printf
s,比如C
。
如果我正确理解你的问题,format()是你要找的,还有its mini-language。
Python2.7及更高版本的愚蠢示例:
对于早期的python版本:(使用2.6.2测试)
我不完全确定我是否理解您的目标,但您可以使用
StringIO
实例作为缓冲:与
sprintf
不同,您只需将字符串传递给buf.write
,然后使用%
运算符或字符串的format
方法对其进行格式化。当然,您可以定义一个函数来获得希望的
sprintf
接口:它的用途如下:
Python对此有一个
%
运算符。有关所有支持的格式说明符,请参阅此reference。
你也可以使用^{} :
相关问题 更多 >
编程相关推荐