2015-09-03 76 views
0

嗨,我想從shell腳本引用shell變量路徑到Python引用shell腳本路徑到Python

test.ksh 
path1=/usr/bin/usr1/dev/data 

    test.py 
     df = pd.read_csv('%path1/testdataset1.dat') 

我想到最後一條語句解析到

df = pd.read_csv('/usr/bin/usr1/dev/data/testdataset1.dat') 

%path1不加工。我使用python 2.6

回答

2

有兩種方式:

  • 訪問您的Python腳本中的環境變量:

    import os 
    
    path1 = os.environ.get('path1') 
    if path1 is not None: 
        df = pd.read_csv(os.path.join(path1, 'testdataset1.dat')) 
    

    os.environ是包含進程的環境變量的字典爲通過來自父母。請確保您導出所需的變量在你的shell腳本,即:作爲命令行參數

    export path1=/usr/bin/usr1/dev/data 
    
  • 通行證path1到您的Python腳本:

    import os, sys 
    
    path1 = sys.argv[1] 
    df = pd.read_csv(os.path.join(path1, 'testdataset1.dat')) 
    

    你的shell腳本將調用的Python這樣的:

    path1=/usr/bin/usr1/dev/data 
    python your_script.py $path1 
    
+0

'os.path.join'不'.format()'。 –

+0

已經在改變你的評論:)不管怎樣,它仍然依賴於'path1'的組件,使用相應的操作系統的路徑分隔符。 – mhawke

+0

它對Python無關緊要,它可以處理你輸入的任何路徑。你可能還想使用'os.path.expanduser()'。 –