原来我的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上的外观的图片
答案 0 :(得分:0)
问题是我有一个执行我的C程序的bash脚本。 bash脚本在程序输出之前插入奇怪的字符并将其添加到其标准输出中。将我在python脚本中调用的命令直接放入而不是调用bash脚本修复了问题。