Python文件输出添加奇怪的字符

时间:2015-01-20 02:28:23

标签: python c linux file-io stdout

原来我的C程序出错了。我将printf更改为仅打印预设字符串并将其重定向到文件,并且额外的字符仍然存在。我仍然不知道为什么。

您好我正在编写一个python脚本来对我正在进行并行的C程序运行分析。现在写我有一个处理器的数量和迭代我希望在一个名为tests的单独文件中传递给我的C程序。我是Python的新手,这是我编写的示例代码,用于弄清楚如何将结果写入最终填充为.csv文件的文件。

#!/usr/bin/env python
import subprocess
mpiProcess = "runmpi"
piProcess = "picalc"

tests = open("tests.txt")
analysis = open("analysis.txt", "w")

def runPiCalc (numProcs, numIterations):
    numProcs = str(numProcs)
    numIterations = str(numIterations)
    args = (mpiProcess, piProcess, numProcs, numIterations)
    popen = subprocess.Popen(args, stdout=subprocess.PIPE)
    popen.wait()
    output = popen.stdout.read()
    return output

def runTest (testArgs):
    testProcs = testArgs[0]
    testIterations = testArgs[1]
    output = runPiCalc(testProcs,testIterations)
    appendResults(output)

def appendResults (results):
    print results
    analysis.write(results + '\n')

for testLine in tests:
    testArgs = testLine.split()
    runTest(testArgs)

tests.close()
analysis.close()

我现在的问题是,当我将“打印结果”打印到标准输出时,输出按预期出现,我得到3.14blablablablawhatever。当我检查analyze.txt文件时,虽然在我的pi计算出现之前,我在每行的开头得到[H [2J(在网上编码为ESC的更奇怪的字符))。我无法弄清楚为什么会这样。为什么file.write的输出与print不同。这是我第一次使用Python,所以我可能只是错过了一些简单的东西。

这是在一台ubuntu服务器上我正在b。。

这是tests.txt和一个关于字符在linux上的外观的图片 characters and test

1 个答案:

答案 0 :(得分:0)

问题是我有一个执行我的C程序的bash脚本。 bash脚本在程序输出之前插入奇怪的字符并将其添加到其标准输出中。将我在python脚本中调用的命令直接放入而不是调用bash脚本修复了问题。