python - 使用 minidom 解析 Bash 导出变量,Python 出错

标签 python bash environment-variables

在我的/etc/bash.bashrc 文件中,我有以下内容:

export SYNCTOOL=/root/Desktop/gb
alias synctest='python $SYNCTOOL/App.py'

在 App.py 中:

from xml.dom.minidom import parse
XML = parse('$SYNCTOOL/Data/Config.xml')

当我在 shell 中键入“synctest”时,出现以下错误:

root@bt:~# synctest
Traceback (most recent call last):
  File "/root/Desktop/gb/App.py", line 12, in <module>
    XML = parse('$SYNCTOOL/Data/Config.xml')
  File "/usr/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
    return expatbuilder.parse(file)
  File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: '$SYNCTOOL/Data/Config.xml'

当我使用“cat”命令查找文件时:

root@bt:~# cat $SYNCTOOL/Data/Config.xml
<?xml version="1.0" ?>
<AllConfigurations>

        <!-- PROGRAM OPTIONS START -->
..
...

所以,我真的很困惑。我该怎么办?

最佳答案

Bash 变量不会自动扩展,使用 os.environ 访问它们:

XML = parse('%s/Data/Config.xml' % os.environ['SYNCTOOL'])

关于python - 使用 minidom 解析 Bash 导出变量,Python 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8766363/

相关文章:

bash - 如何从 awk 的输入 FILENAME 变量中删除路径 - basename 是否可用?

去安装。执行自定义操作

python - 如何在不拉伸(stretch)图像的情况下更改 matplotlib 中 imshow 的比例?

python - 如何生成这个特定的列表列表

bash - 如何创建多行 curl 字符串,变量包含在单引号和双引号中?

asp.net-core - ASP.NET Core 托管环境变量被忽略

environment-variables - 如何将 env 变量传递给 GNOME

python 检查列表中的字符串?

Python:如何在单独的行上编写字符串列表但没有空行

linux - 仅当其 ASCII 格式文件时,shell one-liner 才能对文件进行分类