在我的/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/