将输出保存到tx的奇怪python行为

2024-04-19 12:38:43 发布

您现在位置:Python中文网/ 问答频道 /正文

它应该是非常简单的保存我的程序的结果到一个.txt文件,但是当我这样做时,一些奇怪的事情发生了。首先,虽然终端只需要几秒钟就可以打印出我的结果,但我的结果需要几分钟才能写入.txt文件。另外,当我打开文本文件时,它不会正确保存shell上打印的所有信息!我得到的不是完整的结果,而是“54313806']”作为第一行,然后只将结果的最后一位保存到下面的文本文件中。我的结果在终端上正常显示。你知道吗

我查看了其他查询,以了解如何将结果保存在文本文件中,因此我有:

with open("output.txt", "w+") as output:
     subprocess.call["python", "./my_program.py"], stdout=output)

你知道发生了什么事吗?或者我应该尝试另一种方法将输出保存到文本文件中吗?你知道吗

这是我的完整代码:

import re
import subprocess
f = open('my_program.py')

raw = f.read()
raw = raw.lower()
l = raw.splitlines()
l = [re.sub(r'\t', ' ', l) for l in l]

kiwis = []
for elem in l:
    kiwis.append(elem.strip().split(' '))
for kiwis in kiwis:
    data = kiwis[0:3] #extracting first three elements from every line
    print data

with open("output.txt", "w+") as output:
     subprocess.call["python", "./my_program.py"], stdout=output)

Tags: 文件inpytxt终端foroutputraw
1条回答
网友
1楼 · 发布于 2024-04-19 12:38:43

我不认为像这样从内部递归调用程序是个好主意。。。您可能正在生成无限的子进程。我会忘记subprocess位,直接写入这样的文件:

with open("output.txt", "w+") as output:
   kiwis = []
   for elem in l:
       kiwis.append(elem.strip().split(' '))
   for kiwis in kiwis:
       data = kiwis[0:3] #extracting first three elements from every line
       output.write(data)

相关问题 更多 >