如果我们需要在文件中写一个新行,我们必须编写代码:
file_output.write('Fooo line \n')
有没有任何理由说明Python没有writeln()
方法?
答案 0 :(得分:23)
在Python 2中,使用:
print >>file_output, 'Fooo line '
在Python 3中,使用:
print('Fooo line ', file=file_output)
答案 1 :(得分:10)
省略了提供file
方法的对称接口,因为writeln()
没有意义:
read()
匹配write()
:它们都运行原始数据readlines()
匹配writelines()
:它们都在包含EOL的行上运行readline()
很少使用;迭代器执行相同的工作(可选的size
param除外) writeline()
(或writeln()
)与write()
基本相同,因为它不会添加EOL(以匹配writelines()
的行为)。
模仿文件print
的最佳方法是使用Python 2.x的特殊打印到文件语法或file
函数的print()
关键字参数就像丹尼尔建议的那样。
就个人而言,我更喜欢print >>file, ...
语法而不是file.write('...\n')
。
答案 2 :(得分:4)
我觉得应该。您可以使用的最近的事情是:
file_output.writelines([foo_msg, '\n'])
答案 3 :(得分:2)
print()
是您正在寻找的功能。与python中的大部分核心多态性一样,打印由内置函数提供,而不是使用方法(就像len()
,next()
,repr()
等!)。
作为通用接口的print()
函数也使它更通用,没有文件对象本身必须实现它。在这种情况下,它默认以换行符结束,但可以在函数调用中选择,例如:
print("text", file=sys.stderr, end="\n")
在您建议的用例中,所有文件对象不仅必须实现.write()
方法(现在由print()
使用),还要实现.writeln()
,甚至可能更多!这个基于函数的多态性使python非常丰富,不会给接口带来负担(记住鸭子打字的工作方式)。
注意:此模型一直是Python的核心。在我的示例中,它只是更纯粹的,与Python 3
有关答案 4 :(得分:0)
可能没有真正的原因,只是在你需要的时候写一个换行很容易,那么为什么要用额外的方法来填充文件界面呢?