如何在Python脚本文件中使用shell脚本中的变量?

2024-09-24 20:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个shell脚本,它有一个运行python脚本的命令。我希望在python脚本中使用shell脚本中的4个变量(例如:var1、var2、var3、var4)。有什么建议吗?

例如:我想用shell脚本中的变量替换"lastTest44"firstTest44A-S00000582

driver.find_element_by_id("findKey_input").clear() 
driver.find_element_by_id("findKey_input").send_keys("lastTest44") 
driver.find_element_by_id("ST_View_lastTest44, firstTest44").click() 
driver.find_element_by_link_text("A-S00000582").click() 

Tags: 命令脚本idinputbydriverelementfind
3条回答

只需使用命令行参数:

外壳脚本

a=1
b=2
python test1.py "$a" "$b"

Python脚本

import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
print var1, var2

我想这可以满足你的要求:

2014-06-05 09:37:57 [tmp]$ export VAR1="a"
2014-06-05 09:38:01 [tmp]$ export VAR2="b"
2014-06-05 09:38:05 [tmp]$ export VAR3="c"
2014-06-05 09:38:08 [tmp]$ export VAR4="d"
2014-06-05 09:38:12 [tmp]$ python
Python 2.7.3 (default, Feb 27 2014, 19:58:35) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from os import environ
>>> environ['VAR1']
'a'
>>> environ['VAR2']
'b'
>>> environ['VAR3']
'c'
>>> environ['VAR4']
'd'
>>> environ['VAR5']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'VAR5'

记住捕获KeyError并相应地响应,或者使用get方法(从dict类)并指定在密钥不存在时使用的默认值:

>>> environ.get('VAR5', 'not present')
'not present'

更多: https://docs.python.org/2/library/os.html

您要使用的是所谓的命令行参数。这些是在调用要运行的特定代码段时指定的参数。

在Python中,可以通过名为argv的变量下的sys模块访问这些内容。这是从调用方传入的所有参数的数组,其中数组中的每个值都是一个字符串。

例如,假设我编写的代码采用参数来绘制正方形。这可能需要4个参数—x坐标、y坐标、宽度和高度。用于此操作的Python代码可能如下所示:

import sys
x = sys.argv[1]
y = sys.argv[2]
width = sys.argv[3]
height = sys.argv[4]

# Some more code follows.

有几点需要注意:

  1. 每个参数的类型都是string。这意味着在这种情况下,在将它们转换为所需的正确类型之前,我无法执行任何类型的运算。
  2. sys.argv中的第一个参数是正在运行的脚本的名称。您需要确保从数组sys.argv[1]中的第二个位置开始读取,而不是像通常那样从第零个索引开始读取。

There is some more detailed information here,这将引导您找到处理命令行参数的更好方法。不过,要开始的话,这就足够了。

相关问题 更多 >