如何在python中导出一组url

How to export a set of url in python

提问人:Balaji R B 提问时间:11/13/2023 更新时间:11/19/2023 访问量:40

问:

我在 LocalDB 文件夹中有两个文件命名 trigger.sh 和 emp.py。

在 trigger.sh 我有

export emp_code='IT'
py /C/Users/LocalDB/emp.py

在 emp.py

import os
from os import listdir
from os.path import is filed,join

_emp_code=os.environ['emp_code']

Emp_url = {
'IT':{'Emp_url':'www.it.com'},
'Prod':{'Emp_url':'www.prod.com'},
'Qa':{'Emp_url':'www.qa.com'}
}[_emp_code]
Print(Emp_url)

当我触发 trigger.sh 输出时 “”'Emp_url':'www.it.com'“....同样,如果我在shell脚本中更改我的emp_code,它将更改..

现在,我正在尝试在Shell脚本中使用这些url。但是我得到一个“无效的标识符”。

我尝试过以下代码: Trigger.sh

export emp_code='IT'
export _emp_url= '
'IT':{'Emp_url':'www.it.com'},
'Prod':{'Emp_url':'www.prod.com'},
'Qa':{'Emp_url':'www.qa.com'}'
py /C/Users/LocalDB/emp.py

emp.py:

import os
from os import listdir
from os.path import is filed,join

_emp_code=os.environ['emp_code']
Emp_url = os.environ ['_emp_url']

Emp_url = {Emp_url}[_emp_code]
Print(Emp_url)

关于如何解决和清除这个问题的任何想法

Python shell UNIX 导出

评论

0赞 Codist 11/13/2023
您的 emp.py 文件包含语法错误,您的 Trigger.sh 的第二个版本也包含语法错误。此外,即使您将环境变量设置为作为 Python 字典的字符串表示形式的值,您也需要做更多的工作才能处理它 - 例如,ast.literal_eval()
0赞 user1934428 11/13/2023
在您的第一个代码中,是一个 Hash。在您的第二个代码段中,是一个 String(因为这是您从 中得到的),但您从不解析此字符串以生成 Hash。Emp_urlEmp_urlos.environ

答:

0赞 ranga 11/19/2023 #1

现在,我正在尝试在 Shell 脚本中使用这些 url。但是我得到了一个 “无效的标识符”。

当您尝试使用不是有效 shell 变量名称的字符串执行操作时,通常会显示此错误消息。shell 要求 shell 变量名称、符号和被赋值之间没有空格。行中空格后面的任何内容都应是另一个有效的 shell 变量名称,可能后跟值赋值。export=export=

在脚本 Trigger.sh 中,第一行看起来是正确的;第二行是错误的。在第二行中有一个空格,之后使 shell 需要一个 shell 变量名称(“标识符”),但后面是一个字符串,其中包含标识符中不允许的许多字符(多个 、 和换行符)。=:{}

在 emp.py 中,这条线

from os.path import is filed,join

错了,这个词不应该在那里。is

[ ranga ] $ python3
Python 3.9.13
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> from os import listdir
>>> from os.path import is filed,join
  File "<stdin>", line 1
    from os.path import is filed,join
                        ^
SyntaxError: invalid syntax

在这一行之后:

Emp_url = os.environ ['_emp_url']

Emp_url仅包含字符串,而不包含 .dict

所以,在这一行中:

Emp_url = {Emp_url}[_emp_code]

创建一个包含整个字符串的条目,然后尝试用(另一个字符串)索引它将失败。{Emp_url}set_emp_code

Emp_url中的字符串需要先转换为 a,然后才能用字符串索引它。一种方法是使用包:dictjson

import json
Emp_url = json.loads(os.environ['_emp_url'])

为此,环境变量应包含双引号,而不是单引号。同时仅打印 URL:_emp_url

print Emp_url['Emp_url']

在 Trigger.sh:

  • 在第 2 行,删除“=”后面的空格
  • 在第 3 行和第 4 行,将单引号的所有实例替换为双引号
  • 在第 5 行,将单引号的所有实例(最后一个实例除外)替换为双引号

所以现在 Trigger.sh 可以有类似的东西:

export \
  emp_code='IT' \
  _emp_url='{
    "IT":{"Emp_url":"www.it.com"},
    "Prod":{"Emp_url":"www.prod.com"},
    "Qa":{"Emp_url":"www.qa.com"}
  }'
py /C/Users/LocalDB/emp.py

emp.py 可以有类似的东西

import os
import json

_emp_code=os.environ['emp_code']
Emp_urls = json.loads(os.environ ['_emp_url'])

Emp_url = Emp_urls[_emp_code]['Emp_url']
print(Emp_url)

尝试一下:

[ ranga ] $ export \
>   emp_code='IT' \
>   _emp_url='{
>     "IT":{"Emp_url":"www.it.com"},
>     "Prod":{"Emp_url":"www.prod.com"},
>     "Qa":{"Emp_url":"www.qa.com"}
>   }'


[ ranga ] $ python3
Python 3.9.13 
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import json
>>>
>>> _emp_code=os.environ['emp_code']
>>> Emp_urls = json.loads(os.environ ['_emp_url'])
>>>
>>> Emp_url = Emp_urls[_emp_code]['Emp_url']
>>> print(Emp_url)
www.it.com
>>>