Python中带参数的主导入错误
在一个脚本中,我想从另一个脚本导入主要模块,并且还想传递一个参数。
但是我遇到了一个错误信息:“NameError: global name 'model' is not defined”(名字错误:全局名称'model'未定义)。
如果有人能看到我的错误,我会非常感激!
我的代码:
脚本1
#!/usr/bin/python
import sys
import getopt
import pdb
import shelve
class Car:
""" class representing a car object """
def __init__(self, model):
self.model = model
class Porsche(Car):
""" class representing a Porsche """
def __init__(self, model):
Car.__init__(self, model)
print "I have a Porsche but no driving licence : too bad !"
# Main
def main(argv):
settings = shelve.open('mySettings')
global model
try:
opts, args = getopt.getopt(argv, "m:", ["model="])
except getopt.GetoptError, err:
print " wrong argument, exiting "
sys.exit()
for opt, arg in opts:
if opt in ("-m", "--model"):
model = arg
def choose_car(model):
""" Creates the car"""
my_Porsche = Porsche(model)
choose_car(model)
if __name__ == "__main__":
main(sys.argv[1:])
脚本2
#!/usr/bin/python
import os
import sample
import sys
def main(argv):
script1.main("-m Carrera")
# Main program
if __name__ == '__main__':
main(sys.argv[1:])
祝好,
1 个回答
3
argv
是一个列表。所以你应该这样调用 script1.main
:
script1.main(['-m', 'Carrera'])
或者,也可以这样:
script1.main('-m Carrera'.split())