2012-01-07 5 views
1

でバッシュ輸出minidomと変数、解析エラー、私は次のようしている:App.pyで私/etc/bash.bashrcファイルでPythonの

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

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

私が入力したとき「synctest」私のシェルで、私は以下のエラーを取得しています:

[email protected]:~# 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' 

私は「猫」コマンドでファイルを探します。

[email protected]:~# cat $SYNCTOOL/Data/Config.xml 
<?xml version="1.0" ?> 
<AllConfigurations> 

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

私は本当に混乱しています。私は何をすべきか?

答えて

3

Bashの変数は自動的に展開されていない、それらにアクセスするos.environを使用します。

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

あなたはPythonのプログラムに変数$SYNCTOOLシェルの値を使用しようとしている:os.environオブジェクトを使用して、あなたはPythonプログラム内から環境変数を読みたい場合は

XML = parse('$SYNCTOOL/Data/Config.xml') 

>>> import os 
>>> print os.environ["HOME"] 
/home/sarnold 
>>> 

または、コマンドライン引数から解析するファイルの名前をsys.argv

関連する問題