为什么Python语言没有writeln()方法?

时间:2010-04-04 19:33:58

标签: python syntax history language-design

如果我们需要在文件中写一个新行,我们必须编写代码:

file_output.write('Fooo line \n')

有没有任何理由说明Python没有writeln()方法?

5 个答案:

答案 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)

可能没有真正的原因,只是在你需要的时候写一个换行很容易,那么为什么要用额外的方法来填充文件界面呢?