Python中带参数的主导入错误

0 投票
1 回答
529 浏览
提问于 2025-04-16 03:13

在一个脚本中,我想从另一个脚本导入主要模块,并且还想传递一个参数。

但是我遇到了一个错误信息:“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())

撰写回答