2015-09-03 78 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()'。 –