Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写生成器';输出到文本文件?_Python_Generator - Fatal编程技术网

Python 如何编写生成器';输出到文本文件?

Python 如何编写生成器';输出到文本文件?,python,generator,Python,Generator,difflib.context\u diff方法返回一个生成器,显示两个比较字符串的不同行。如何将结果(比较)写入文本文件 在这个示例代码中,我需要文本文件中从第4行到结尾的所有内容 >>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n'] >>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n'] >>> for line in context_

difflib.context\u diff
方法返回一个生成器,显示两个比较字符串的不同行。如何将结果(比较)写入文本文件

在这个示例代码中,我需要文本文件中从第4行到结尾的所有内容

>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'):
...     sys.stdout.write(line)  # doctest: +NORMALIZE_WHITESPACE
*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
  guido
--- 1,4 ----
! python
! eggy
! hamster
  guido
提前谢谢

with open(..., "w") as output:
    diff = context_diff(...)
    output.writelines(diff)
有关
文件的详细信息,请参见writelines()

说明:

  • with
    是一个上下文管理器:它处理完成后关闭文件的操作。这不是必须的,但这是一种很好的做法——你也可以这样做

    output = open(..., "w")
    
    然后调用
    output.close()
    ,或者让Python为您执行(当内存管理器收集
    output
    时)

  • “w”
    表示您正在以写入模式打开文件,而不是
    “r”
    (默认为读取模式)。您可以在这里放置各种其他选项(
    +
    用于追加,
    b
    用于二进制iirc)

  • writelines
    获取任意一组字符串并将它们写入文件对象,每次一个。这与diff:output.write(line)中的行的
    相同,但更整洁,因为迭代是隐式的

  • 有关
    文件的详细信息,请参见writelines()

    说明:

  • with
    是一个上下文管理器:它处理完成后关闭文件的操作。这不是必须的,但这是一种很好的做法——你也可以这样做

    output = open(..., "w")
    
    然后调用
    output.close()
    ,或者让Python为您执行(当内存管理器收集
    output
    时)

  • “w”
    表示您正在以写入模式打开文件,而不是
    “r”
    (默认为读取模式)。您可以在这里放置各种其他选项(
    +
    用于追加,
    b
    用于二进制iirc)

  • writelines
    获取任意一组字符串并将它们写入文件对象,每次一个。这与diff:output.write(line)
    中的行的
    相同,但更整洁,因为迭代是隐式的


  • 这与生成器或上下文无关。它基本上是“如何写入文件?”你应该阅读它与生成器或上下文无关。它基本上是“如何写入文件?”你应该阅读