perl和python的相互调用

发布时间:2019-09-12 08:00:38编辑:auto阅读(2200)

    从实用角度出发,并未付诸于解释(有时间后期补充)。程序内容直接复制到文件,即可使用。

    注意perl调用python路径在相同目录下;

    python调用perl则不需要

    系统环境:windows7

    python版本:2.x

    perl版本:This is perl 5, version 24, subversion 2 (v5.24.2) built for MSWin32-x86-multi-thread-64int

    编辑器:notepad++

    notepad++配置python和perl运行环境方法:

    http://blog.csdn.net/sunyan3517/article/details/74857499


    perl调用python
    use File::Spec;

    *******perl代码*****perl_test.pl*********
    sub PerlCallPython
    {
        my $path_curf = File::Spec->rel2abs(__FILE__);
        print "C PATH = ",$path_curf,"\n";
        my ($vol, $dirs, $file) = File::Spec->splitpath($path_curf);
        print "C Dir = ", $dirs,"\n";
        my $count = 1;#可以是任意字符串
        chdir $dirs;#saveComment_temp.py 程序所在位置
        system("python python_t.py -n $count");
    }
    chdir $dirs;#saveComment_temp.py 程序所在位置

    PerlCallPython();
        
        
    ******python文件内需要的程序***python_t.py*******
    #coding:utf-8
    import argparse
    parser = argparse.ArgumentParser()  #建立parser
    parser.add_argument('-n')  #接受n存入
    args = parser.parse_args()  #得到所有参数
    #获得的内容: Namespace(n='1')
    #注意不是字符串 而是一个类,所以需要str()转换
    path_temp = args;
    print args;

    ========================================================================
    ========================================================================
    ========================================================================
    python 调用 perl
    python代码
        #coding:utf-8
        import subprocess
        arg1 = "10";
        arg2 = "20";
        #无参数调用方法
        #subprocess.call(["perl", "XXXXX\\XXXXXX\\perl_t.pl"]) #注意路径
        #subprocess.call接受字符串参数,所以arg1 = "10";
        #有参数调用方法
        subprocess.call(["perl", "XXXXX\\XXXXXX\\\perl_t.pl", arg1, arg2]) #注意路径

        
    perl代码
    print "call perl\n";
    sub fun0
    {
        my $fun0_t0 = $ARGV[0];
        my $fun0_t1 = $ARGV[1];
        print "\$fun0_t0: ($fun0_t0)\n";
        print "\$fun0_t1: ($fun0_t1)\n";
    }
    fun0();
    sleep(1000);
    修改上面的路径就可以只接运行程序



    深入学习链接:

    http://www.jb51.net/article/57208.htm

    http://blog.chinaunix.net/uid-26000296-id-4461522.html


关键字