【发布时间】:2014-05-17 02:23:31
【问题描述】:
我有一个 python 脚本作为其他脚本的启动器。该脚本从输入参数启动脚本,以下是一些相关代码:
try:
if verbose:
print("Calling script ", args.script, " with arguments", *args.script_argument)
os.execl(args.script, *args.script_argument)
except OSError as e:
print("OSError: [Errno {0}] {1}: {2}".format(e.errno, e.strerror, args.script), file=sys.stderr)
args 是由parse_args() 从ArgumentParser 返回的对象。使用nargs=argparse.REMAINDER 检索args.script_arguments。
这是启动器正在调用的脚本:
import sys
if __name__ == '__main__':
print(sys.argv)
从os.execl 调用之前的打印中,我可以看到参数设置正确,但是脚本打印的参数更少。
例如,如果使用./launcher.py -v script foo bar 调用启动器
启动器将打印,Calling script script with arguments foo bar。
但是,脚本会打印 ['script.py', 'bar']。为什么脚本不打印foo?
【问题讨论】:
标签: python python-2.7 argv os.execl