我有一个shell脚本,它在网络设备上的目录中的所有文件上执行whisper,然后将生成的成绩单存储在同一个卷上。有时网络发生某些情况(卷断开连接),导致保存结果成绩单失败。这是一个典型的错误消息:
Traceback (most recent call last):
File "/Users/db/Library/Python/3.11/bin/whisper", line 8, in <module>
sys.exit(cli())
^^^^^
File "/Users/db/Library/Python/3.11/lib/python/site-packages/whisper/transcribe.py", line 413, in cli
os.makedirs(output_dir, exist_ok=True)
File "<frozen os>", line 225, in makedirs
FileNotFoundError: [Errno 2] No such file or directory: '.'
字符串
我的脚本的相关部分看起来像这样:
whisper "$file" --model large >> log
if [[ $? -eq 0 ]]; then
echo "exit success: $?"
echo "*****success****** $?, `uname -n`, $me" >> "${directory}/../${transdir}/${name}.txt"
else
echo "exit error: $?"
echo "*****error****** $?, `uname -n`, $me" >> "${directory}/../${transdir}/${name}.txt"
fi
型
通常情况下,当脚本成功完成时,它会像预期的那样输入第一个if,但即使我收到上面这样的错误消息,它仍然会输入第一个if
,就好像它成功了一样。
注意:AFAIK写入log
不是问题。
更新:
% whisper --bad_args; echo $?
whisper: error: the following arguments are required: audio
2
型
更新2:
#!/opt/local/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11
# -*- coding: utf-8 -*-
import re
import sys
from whisper.transcribe import cli
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(cli())
型
1条答案
按热度按时间icnyk63a1#
$?
是非常不稳定的:当你echo $?
的时候,$?
的值会被echo
的退出状态替换,不再引用whisper
的退出状态。因此,如果你可能不止一次地需要它,你应该在使用它之前把它存储在一个变量中。字符串