如何在python中导出一组url

问题描述 投票:0回答:1

我在 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。但是收到“无效标识符”。

我尝试过以下代码: 触发器.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 export
1个回答
0
投票

现在,我尝试在 Shell 脚本中包含这些 url。但我得到了 “无效标识符”。

当您尝试使用不是有效 shell 变量名称的字符串执行

export
操作时,通常会显示此错误消息。 shell 要求 shell 变量名称、
=
符号和分配的值之间没有空格。
export
行上空格后面的任何内容都应该是另一个有效的 shell 变量名称,可能后跟
=
进行赋值。

在脚本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 中的字符串需要先转换为

dict
,然后才能用字符串对其进行索引。一种方法是使用
json
包:

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

为此,环境变量

_emp_url
应包含双引号而不是单引号。也可以仅打印 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
>>>
© www.soinside.com 2019 - 2024. All rights reserved.