为什么添加 tee 会改变输出顺序
Why addition of tee changes order of output
所以这是我的文件结构
|- runit.sh
|- dir1
|- run.py
|- test.py
runit.sh 在 dir1 中调用 run.py,dir1 又调用 test.py。
test.py 包含实际测试用例。我面临的问题是当我在 runit.sh 中添加 tee 以将输出捕获到文件时,它改变了输出顺序。我不知道为什么。
让我也把文件的内容。
runit.sh
tests_to_run=" dir1"
for i in $tests_to_run
do
(
cd $i
python run.py 2>&1
)
done | tee -a somefile
run.py
import os, sys, subprocess
mypath = os.path.abspath(os.path.dirname(__file__))
tests = [
'test.py',
]
for test in tests:
print '\n\nRunning test --- %s' % test
args = ['python', os.path.join(mypath, test)]
args.extend(sys.argv)
subprocess.call(args)
test.py
print "this is hello from test1"
现在,当我 运行 使用 runit.sh 进行测试时,我得到以下输出
this is hello from test1
Running test --- test.py
当我从 runit.sh 和 运行 中删除“| tee -a somefile”时,我得到了这个输出 -
Running test --- test.py
this is hello from test1
我从昨天开始就想疯了,但没有运气。
这不是关于 tee
添加
sys.stdout.flush()
之后
print '\n\nRunning test --- %s' % test
简单测试:
:/tmp/test/dir1 $ python run.py
Running test --- test.py
this is hello from test1
同花顺:
:/tmp/test/dir1 $ python run.py | xargs
Running test --- test.py this is hello from test1
没有冲洗:
:/tmp/test/dir1 $ python run.py | xargs
this is hello from test1 Running test --- test.py
所以这是我的文件结构
|- runit.sh
|- dir1
|- run.py
|- test.py
runit.sh 在 dir1 中调用 run.py,dir1 又调用 test.py。
test.py 包含实际测试用例。我面临的问题是当我在 runit.sh 中添加 tee 以将输出捕获到文件时,它改变了输出顺序。我不知道为什么。 让我也把文件的内容。
runit.sh
tests_to_run=" dir1"
for i in $tests_to_run
do
(
cd $i
python run.py 2>&1
)
done | tee -a somefile
run.py
import os, sys, subprocess
mypath = os.path.abspath(os.path.dirname(__file__))
tests = [
'test.py',
]
for test in tests:
print '\n\nRunning test --- %s' % test
args = ['python', os.path.join(mypath, test)]
args.extend(sys.argv)
subprocess.call(args)
test.py
print "this is hello from test1"
现在,当我 运行 使用 runit.sh 进行测试时,我得到以下输出
this is hello from test1
Running test --- test.py
当我从 runit.sh 和 运行 中删除“| tee -a somefile”时,我得到了这个输出 -
Running test --- test.py
this is hello from test1
我从昨天开始就想疯了,但没有运气。
这不是关于 tee
添加
sys.stdout.flush()
之后
print '\n\nRunning test --- %s' % test
简单测试:
:/tmp/test/dir1 $ python run.py
Running test --- test.py
this is hello from test1
同花顺:
:/tmp/test/dir1 $ python run.py | xargs
Running test --- test.py this is hello from test1
没有冲洗:
:/tmp/test/dir1 $ python run.py | xargs
this is hello from test1 Running test --- test.py