从一个主python脚本,这里是main.py
,我想调用多个下标,它们要么是python脚本本身(这里是sub1.py
,为简单起见),要么是bash/shell脚本(这里是sub2.sh
,为简单起见;这些通过subprocess.Popen()
调用)。下标需要来自main.py
的几个变量;相反地,main.py
可能需要在下标中设置变量。因此,需要在python-python(main.py
<-->sub1.py
)和python-shell(main.py
<-->sub2.sh
)之间传输变量。
我知道的一些方法:
main.py
-->sub1.py
:通过os.system()
或subprocess.Popen()
从main.py
调用sub1.py
,将变量作为脚本参数传递,从例如sub1.py
中的sys.argv[1]
main.py
-->sub1.py
:将sub1.py
导入main.py
;来自main.py
的变量必须设置为sub1.py
命名空间,否则sub1.py
无法识别;如果sub1.py
中存在非函数/类代码(即“全局”脚本代码,是否也正确执行)?main.py
-->sub2.sh
:通过os.system()
或subprocess.Popen()
从main.py
调用sub2.sh
,将变量作为脚本参数传递,从例如sub2.sh
中的$1
- 所有方向/脚本类型:将变量以任何格式存储在来自一个脚本的某个文件中(例如,.txt、.dat、.pickle(用于python-python传输)),从其他脚本中的文件读取变量
- 所有方向/脚本类型:从一个脚本(在
os.environ[]
字典中)将变量存储为环境变量,在另一个脚本中根据需要从那里提取
问题:在python和python之间或者python和shell脚本之间传输变量(共享信息)的 * 最方便 * 的方法是什么?
问题的背景:main.py
是以前的shell脚本main.sh
的Python翻译。在main.sh
中,任何下标subX.sh
(当时python脚本较少)都是通过source subX.sh
调用的,这样来自main.sh
和subX.sh
的变量总是被相应的其他脚本所知(因为source
在同一个shell中运行下标)。
使用的python版本是2.7.18
(兼容性原因;不允许我安装较新的解释器)。
1条答案
按热度按时间nuypyhwy1#
您要查找的是sys库中的
sys.argv
。查看更多:https://docs.python.org/fr/3/library/sys.html#sys.argv基本上,在main.py如果你调用函数
python sub1.py arg1 arg2
,在sub1.py中,你可以得到这些参数:字符串
注意,
sys.argv[0]
不是你的第一个参数!