我有两个文件,一个我关心的副作用发生在if __name__ == "__main__"警卫内:
# a.py
d = {}
if __name__ == "__main__":
d['arg'] = 'hello'
第二个文件导入第一个(使用runpy)并打印字典:
# b.py
import runpy
m = runpy.run_module('a', run_name='__main__')
print(m['d']) # {'arg': 'hello'}
到目前为止,这有效。但现在我想更改第一个文件以接受命令行参数:
import sys
d = {}
if __name__ == "__main__":
d['arg'] = process(sys.argv[1])
问题是它process()是由其他人编写的,不在我的控制范围内,但我仍然想d在“处理”后获取更新的字典。
如何sys.argv在调用之前模拟runpy,或者以其他方式提供该值a.py?