gpt4 book ai didi

Python:第二次调用 writelines() 返回空

转载 作者:行者123 更新时间:2023-12-01 04:38:11 25 4
gpt4 key购买 nike

在 python 脚本中,我使用 difflib.unified_diff() 函数来接收两个文件的差异。然后,按照这个example ,我调用writelines () 函数将结果写入屏幕:

diff = difflib.unified_diff( .... )
sys.stdout.writelines(diff)

然后,我也想将差异写入文件,但我收到一个空文件。奇怪的部分来了:如果我交换两个 writelines() 调用的顺序,我会得到一个正确的文件,但屏幕输出为空。只需调用最后一个命令两次也可以重现相同的问题,如下所示:

diff = difflib.unified_diff( .... )
sys.stdout.writelines(diff)
sys.stdout.writelines(diff)

这只会打印一次差异。

我认为该函数第二次从 diff 的同一(即最后)“行”继续,并且没有任何可写的内容。所以,一定有某种迭代器我必须重置,但我找不到什么以及如何......

最佳答案

difflib.unified_diff() 返回一个生成器。它在迭代时仅产生输出一次

如果您需要将其写出两次,请先捕获列表中的行:

diff = list(difflib.unified_diff( .... ))
sys.stdout.writelines(diff)
sys.stdout.writelines(diff)

来自difflib.unified_diff() documentation :

Compare a and b (lists of strings); return a delta (a generator generating the delta lines) in unified diff format.

我的粗体强调

关于Python:第二次调用 writelines() 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com