将另一个python文件中的值替换为当前的

时间:2015-12-29 00:03:28

标签: python

我正在使用基于"术语"运行搜索的API(Yelp'和#34;位置。"我想用我写入第一个脚本的另一个脚本替换一个位置列表。我已经能够弄清楚如何导入文件并使用if __name__ == '__main__':运行它们但是,我意识到我并没有真正尝试在另一个文件中使用这些功能......我试图尝试只需替换位置。我该怎么做?

这是我到目前为止所拥有的。这是我在python文件中使用的代码片段" A" :

DEFAULT_TERM = ''
DEFAULT_LOCATION = 'San Francisco, CA'
DEFAULT_OFFSET = 0
DEFAULT_SORT = 2

(这里有很多代码)

def main():
    parser = argparse.ArgumentParser()

    parser.add_argument('-q', '--term', dest='term', default=DEFAULT_TERM,
                        type=str, help='Search term (default: %(default)s)')
    parser.add_argument('-l', '--location', dest='location',
                        default=DEFAULT_LOCATION, type=str,
                        help='Search location (default: %(default)s)')

    if __name__ == '__main__':
        main()

然后在我的另一个文件(B)中:

locations = ['SF', 'NY', 'etc']
import sample

    sample.main()

我被卡住了!在文件B中调用sample.main()并不会将这些位置替换为" DEFAULT LOCATIONS"在文件A中(我意识到另一种方法是制作"位置"作为add_argument位置的一部分,但我认为将它们替换为DEFAULT LOCATIONS会更容易。)我能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

通常,您的main()函数在解析命令行参数以执行实际作业后调用search(term, locaction)。如果没有,则修改它以执行此操作。然后,在您的另一个脚本中,import yelp并调用yelp.search()函数(为了清楚起见,我已将sample重命名为yelp

import yelp

result = yelp.search(term, locations)

如果您无法修改sample.py文件,则可以设置sys.argv来模拟所需的命令行:

import sys
import sample

sys.argv[1:] = ['-q', term, '-l', location]
sample.main()