代码之家  ›  专栏  ›  技术社区  ›  systempuntoout

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

  •  19
  • systempuntoout  · 技术社区  · 14 年前

    如果我们需要将新行写入文件,则必须对其进行编码:

    file_output.write('Fooo line \n')
    

    为什么python没有 writeln() 方法?

    5 回复  |  直到 14 年前
        1
  •  10
  •   efotinis    14 年前

    省略了提供 file 方法和因为 writeln() 没有意义:

    • read() 比赛 write() :它们都是基于原始数据操作的
    • readlines() 比赛 writelines() :它们都在线路上运行,包括其EOL
    • readline() 很少使用;迭代器执行相同的作业(可选的除外 size 参数)

    writeline() (或) 写入() )基本上与 写() ,因为它不会添加EOL(以匹配 写入文件() )

    模仿 print 对一个文件来说,就是使用python 2.x或 文件 的关键字参数 print() 像丹尼尔建议的那样。

    就个人而言,我更喜欢 print >>file, ... 语法过度 file.write('...\n') .

        2
  •  23
  •   Daniel Stutzbach Edward Leno    14 年前

    在python 2中,使用:

    print >>file_output, 'Fooo line '
    

    在python 3中,使用:

    print('Fooo line ', file=file_output)
    
        3
  •  3
  •   Daniel Reis    12 年前

    我觉得应该。你能使用的最接近的东西是:

    file_output.writelines([foo_msg, '\n'])
    
        4
  •  2
  •   u0b34a0f6ae    14 年前

    print() 是您要查找的功能。与Python中的许多核心多态性一样,打印是由内置函数提供的,而不是使用方法(就像 len() , next() , repr() 等等!).

    这个 打印() 作为通用接口的函数也使其更加通用,而文件对象本身不必实现它。在这种情况下,它默认以换行方式终止,但可以在函数调用中选择它,例如:

    print("text", file=sys.stderr, end="\n")
    

    在您建议的用例中,所有的文件对象不仅要实现 .write() 方法(现在由 打印() ),而且 .writeln() 可能更多!这种基于函数的多态性使得Python非常丰富,而不需要增加接口负担(记住duck类型是如何工作的)。

    注意:这个模型一直是Python的中心。在我的示例中,它更纯粹,与Python3有关

        5
  •  0
  •   Ned Batchelder    14 年前

    可能没有真正的原因,只是在需要的时候很容易写新行,所以为什么要用一个额外的方法来混乱文件接口呢?

    推荐文章