精华内容
下载资源
问答
  • 本文实例讲述了python实现调用其他python脚本的方法,分享给大家供大家参考。具体方法如下: 该实例调用当前目录下的md5get.py脚本。代码如下: import os import logging import subprocess log = logging....
  • shell脚本中调用python脚本的函数并获取python脚本函数的return值 例子1: 废话少说,直接上代码: python脚本:merge_report.py # coding=utf-8 import sys def main(param): return param def find_...

    shell脚本中调用python脚本的函数并获取python脚本函数的return值

    例子1:

    废话少说,直接上代码:

    python脚本:merge_report.py

    # coding=utf-8
      
    import sys
    
    def main(param):
            return param
    
    def find_report(param):
            return param
    
    if __name__ == "__main__":
            print main('main')
            print find_report('find_report')

    shell脚本:test_sh.sh

    #!/bin/bash
    # cd 到python脚本所在的目录,以便导入
    cd /home/shell_python
    # 打印当前路径
    echo `pwd`
    # 执行python函数获取函数return的返回值,并赋值给变量
    haha=`python -c 'import merge_report; print merge_report.find_report("bilibili")'`
    # 打印结果
    echo  $haha

    执行shell脚本:

    sh test_sh.sh
    

    输出:

    bilibili

     

     

    例子2:

    Shell脚本调用Python函数,本例子是通过Shell调用Python脚本,检查服务器上的某端口是否开启,编写的Python脚本port.py,脚本内容:

    #!/usr/bin/python
    # port.py
     
    import socket
     
    def scan(port):
        s = socket.socket()
        s.settimeout(0.1)
        if s.connect_ex(('localhost', port)) == 0:
            return 'port: ' + str(port) + ' open'
        else:
            return 'port: ' + str(port) + ' not open'
        s.close()
     
    if __name__ == '__main__':
      scan()


     

     在Shell脚本中,这样编写命令

        cd /home/appuser
        checkresult=`python -c 'import port; print port.scan(80)'`
        echo $checkresult
        


    语句解释:首先cd到要执行的Python脚本目录,然后使用 python -c 'import port; print port.scan(80)' 调用port模块中的scan函数,检查80端口是否正在使用。-c选项是告诉Python来执行一些Python命令

    echo输出结果

    port: 80 open


     

    如果传入一个不是正在使用的端口号801

    checkresult=`python -c 'import port; print port.scan(801)'`


    echo输出结果

    port: 801 not open


     

    另外,`python -c 'import port; print port.scan(80)'`  也可以写成  $(python -c 'import port; print port.scan(80)')

     

    实际使用中的一个例子,Shell脚本调用一个Python方法,通过socket检查远端的IP和端口是否可连通

    Python脚本pysocket.py:

    #!/usr/bin/python
     
    import socket
     
    def scan(ip,port):
        s = socket.socket()
        s.settimeout(2)
        
        if s.connect_ex((str(ip), port)) == 0:
            return 0
        else:
            return 1
        s.close()
     
    if __name__ == '__main__':
        scan()


    pysocket.py中的scan方法里,如果通过socket能连接上ip和端口的服务,则返回0值,否则返回1

     

    Shell脚本

    max_check=5
    #检查服务是否启动
    function check() {
         #先进入到pysocket.py所在目录
         cd /opt/data/py
         i=1
         while [ $i -le $max_check ]
         do
             echo "$i th check: " $1 " " $2
             reval=$(python -c 'import pysocket; print pysocket.scan("'$1'",'$2')')
             echo "check result: "$reval
             if [ $reval -eq 0 ]; then
                 echo "check success"
                 return 0
             else
                 echo "next check after 30 seconds"
                 sleep 30
             fi
             let i++
         done
         return 1
    }


       Shell中的check函数中,通过 $(python -c 'import pysocket; print pysocket.scan("'$1'",'$2')') 调用pysocket.py 的scan方法并传参数,如果连接不通,每次检查后等待30秒,最多检查5次。

     Shell调用check函数

    check 10.7.128.186 26666
    

     

    展开全文
  • 主要介绍了调用其他python脚本文件里面的类和方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python--python脚本调用shell命令

    千次阅读 2019-09-03 09:35:39
    文章目录python脚本调用shell命令os.system()os.popen()subprocess.call()subprocess.Popen()commands 参考: python脚本调用shell命令 os.system() os.system()执行成功会自动返回值0,执行的shell命令结果会打印...


    参考: Python调用shell命令常用方法

    python脚本调用shell命令

    os.system()

    os.system()执行成功会自动返回值0,执行的shell命令结果会打印出来,例如执行如下代码:

    import os
    
    if __name__ == "__main__":
    
       print("this is a test file ")
       
       cmd = "ls -a"
       val = os.system(cmd)
       print(val)
    

    结果如下所示,显示当前文件目录下的所有文件简略信息,val打印的结果是0,表明执行成功。如果不成功,返回的结果是1。

    $ python test2.py
    this is a test file
     .   ..   learn-to-pack   mean_shift.py  'pyspark demo.py'   test.py   test2.py
    0
    

    os.popen()

    os.popen()以文件的形式返回shell运行结果,通常需要用read()或者readlines()读取。

    import os
    
    if __name__ == "__main__":
    
        print("this is a test file ")
       
        cmd = "ls"
        val = os.popen(cmd)
        print(val)
        print(val.read())
    

    上述代码运行结果如下所示,可以看到直接打印val是不能看到信息的,采用read()可以读取其中的内容。

    $ python test2.py
    this is a test file
    <os._wrap_close object at 0x000002511FC8CC88>
    learn-to-pack
    mean_shift.py
    pyspark demo.py
    test.py
    test2.py
    

    如果采用readlines(),就需要用循环的方式一行一行读取了。结果与上面一样。

    for tmp in val.readlines():
            print(tmp,end='')
    

    subprocess.call()

    subprocess.call()功能类似os.system(),返回值表示执行成功与否。

    import subprocess as sp
    
    if __name__ == "__main__":
    
        print("this is a test file ")
       
        cmd = "ls"
        val = sp.call(cmd)
        print(val)
    

    执行结果如下,返回值0表示执行成功。

    $ python test2.py
    this is a test file
     learn-to-pack   mean_shift.py  'pyspark demo.py'   test.py   test2.py
    0
    

    subprocess.Popen()

    参考:python中的subprocess.Popen()使用

    import subprocess as sp
    
    if __name__ == "__main__":
    
        print("this is a test file ")
       
        cmd = "ls"
        res = sp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)
        visible_res = res.stdout.readlines()
        for tmp in visible_res:
            print(tmp.decode(), end=' ')
    

    执行结果如下。subprocess.Popen()需要讲的太多了,先占个坑…

    $ python test2.py
    this is a test file
    learn-to-pack
     mean_shift.py
     pyspark demo.py
     test.py
     test2.py
    

    看到有博客提到 shlex.split() 可以用来格式化字符串,按照空格将其分割处理。原始的字符串中可能有多个空格的情况,处理之后都可以正确分割。分割之后的值可以直接送到 sp.Popen() 运行。

    cmd = "ls  -a | grep test"
    cmd = shlex.split(cmd)
    print(cmd)
    

    打印结果为:

    ['ls', '-a', '|', 'grep', 'test']
    

    commands

    该模块在python3中已经删除了。。。


    python脚本传参数给shell命令

    这里涉及到三个问题,第一是python脚本获取命令行用户输入参数,第二是python脚本中直接执行的shell命令如何获取python代码的参数,第三是python脚本中执行的是shell脚本,其如何获取python传递的参数。下面分别依次说明。

    python脚本获取命令行用户输入参数

    这里可以参考我的另一篇博客:python–获取参数输入(获取用户输入)

    python传参数给shell命令

    代码如下,传递一个路径 s_path 给 ls 命令,直接用字符串连接的形式,注意命令之间的空格。

    import subprocess as sp
    
    if __name__ == "__main__":
    
        print("this is a test file ")
       
        s_path = "learn-to-pack"
        cmd = "ls " + s_path + " | grep test" 
        res = sp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)
        visible_res = res.stdout.readlines()
        for tmp in visible_res:
            print(tmp.decode(),end=' ')
    

    执行结果:

    $ python test2.py
    this is a test file
    test1.py
    

    python传参数给shell脚本

    代码如下,传参形式与前面的一样。

    import subprocess as sp
    
    if __name__ == "__main__":
    
        print("this is a test file ")
       
        s_path = "learn-to-pack"
        cmd = "sh " + "E:/code-study/shell/test1.sh "  + s_path
        res = sp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)
        visible_res = res.stdout.readlines()
        for tmp in visible_res:
            print(tmp.decode(),end=' ')
    

    而test1.sh中的代码如下,shell中通过$1读取参数,类似在命令行执行shell一样。

    echo $1
    echo "the data path is $1"
    ls $1
    data_path=$1
    echo path
    echo $data_path
    

    python脚本的执行结果为:

    $ python test2.py
    this is a test file
    learn-to-pack
     the data path is learn-to-pack
     __pycache__
     build
     dist
     liuying.py
     liuying.spec
     test1.py
     path
     learn-to-pack
    
    展开全文
  • Python脚本之间调用

    千次阅读 2016-12-09 21:44:18
    自己遇到的很简单的小问题,写出来给需要的朋友...2)需要调用脚本中导入需要调用脚本,from py导入的脚本名 import *; 3)执行当前脚本。 具体案例:  我现在需要写一个看means算法,我写了两个脚本,一个kmeans

    自己遇到的很简单的小问题,写出来给需要的朋友参考下。

    如果对于两个(或多个).py脚本,其中一个脚本需要调用另外一个(或多个)脚本,解决步骤如下:

    1)将两个(或多个)脚本放在同一个目录下;

    2)需要调用的脚本中导入需要调用的脚本,from py导入的脚本名 import *;

    3)执行当前脚本。

    具体案例:

         我现在需要写一个kmeans算法,我写了两个脚本,一个kmeans.py和一个test_kmeans.py,两个脚本我同时放在了个人win7的PC的kmens文件夹中,过程如下图所示:

        kmeans.py中主要写了k均值聚类中的计算欧式距离、找聚类中心、更新聚类数等方法,test_kmeans.py中则是聚类的测试数据和调用kmeans.py中方法的代码段,在test_kmeans.py加入一行代码:from kmeans import * 就可以完成对kmeans.py方法的调用。

    展开全文
  • python-调用其他python脚本

    千次阅读 2012-05-22 15:11:27
    调用当前目录下的md5get.py脚本。 import os import logging import subprocess log = logging.getLogger("Core.Analysis.Processing") INTERPRETER = "/usr/bin/python" if not os.path.exists...

    调用当前目录下的md5get.py脚本。



    import os
    import logging
    import subprocess
    
    log = logging.getLogger("Core.Analysis.Processing")
    
    INTERPRETER = "/usr/bin/python"
    
    
    if not os.path.exists(INTERPRETER):
        log.error("Cannot find INTERPRETER at path \"%s\"." % INTERPRETER)
        
    processor = "md5get.py"
    
    pargs = [INTERPRETER, processor]
    pargs.extend(["--input=inputMd5s"])
    subprocess.Popen(pargs)


    展开全文
  • 当我们写好Django项目后,需要在项目中利用Python脚本测试和调用数据时,我们可以使用一以下方法。 在Django项目下建立一个文件目录作为脚本代码环境,在其中创建py文件复制以下代码进去: import os if __name_...
  • node调用python脚本

    2021-03-24 16:24:35
    node调用python脚本做一个简易小demo
  • C++调用python脚本

    2017-03-24 18:10:54
    C++调用python脚本
  • python脚本调用批处理命令

    万次阅读 2019-08-26 09:48:32
    直接就一句话,采用绝对路径的情况下: os.system('C:/Users/你的路径/run.bat') 需要注意,你如果直接赋值windows下的路径是这样的: C:\Windows\apppatch\AppPatch64 ...可以看到斜杠的方向是不同的,所以,...
  • java调用python脚本

    千次阅读 2018-09-28 18:35:42
    调用python脚本有以下几种情况,不带参数调用python脚本,动态传参数调用python脚本调用python脚本中的某个方法,以下将讲解如何实现上述需求。  代码在windows系统上运行,需要提前安装p...
  • C# 调用Python脚本.zip

    2021-07-02 16:16:15
    C#调用Python脚本源码,包含IronPython.2.7.11安装包,包含dll全部资料,Microsoft.Scripting.dll,IronPython.dll,实测可用
  • MATLAB调用python脚本

    千次阅读 2020-02-02 19:10:42
    MATLAB如何调用python脚本? 我们可以通过Matlab的 system指令 ,实现对python脚本调用。 因此,实现方法为: [status,cmdout]=system(‘python D:\Desktop\hello_world.py’) 即python 路径 运行结果: ...
  • 这个模块支持在 python 脚本中直接调用服务器的 shell , 执行命令, 大爱: from subprocess import call # 获取当前环境的python解释器路径 import sys py_path = sys.executable # 在shell中执行字...
  • 主要介绍了3种python调用其他脚本的方法,每种方法通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了简单了解python调用其他脚本方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Hive调用python脚本

    千次阅读 2018-12-06 11:04:29
    Hive的 TRANSFORM 关键字提供了在SQL中调用自写脚本的功能,本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。 操作步骤: 1、创建基表 CREATE TABLE u_data ( userid INT,...
  • shell脚本调用python脚本,并传参。 本文以删除指定文件夹下,以当前时间为基准 的指定天数以前的文件,包括空文件夹
  • IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Hugunin所发起,是一个开源的项目,基于微软的 DLR引擎。...  使用场景: ...下面通过简单的示例说明如何应用C#调用Python脚本。 1、在VS中
  • 有时需求使用JAVA直接调用python脚本,执行一些服务器监控的事情。 本文给出一个java直接调用python脚本的例子
  • C++调用Python脚本

    2018-04-09 23:03:59
    完整的C++调用Python脚本源码,包含参数传递和函数返回值处理等,且解决传递中文参数出现乱码等问题
  • Qt调用Python脚本

    万次阅读 热门讨论 2017-09-01 17:53:14
    因为Python库比较强大,所以就采用Qt去调用Python脚本进行项目开发,下面是Qt调用Python脚本,结合CPython进行传值等 使用的编译器是QtCreater5.6 使用Python版本是Python3.4   在调用Python脚本时,先将Python...
  • 【python】crontab调用python脚本

    千次阅读 2013-03-01 13:23:08
    用crontab执行一个python脚本,结果总是没反应。 原因:python里面有一个打开文本的操作,用的是相对路径,crontab执行路径暂时不知道,所以即使脚本执行用绝对路径,但是打开文本就会有问题。 ...
  • 主要介绍了Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例,本文给出了利用子进程调用系统命令、执行系统命令、调用传参数的shell脚本、调用python脚本的例子,需要的朋友可以参考下
  • Java调用Python脚本

    万次阅读 2018-11-22 16:15:06
    最近突发奇想地想要在Java里调用Python脚本,在网上查过之后还真的可以。 常见的java调用python脚本方式 通过Jython.jar提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 这两种方法我都尝试过,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,478
精华内容 71,791
关键字:

python脚本里调用其他脚本

python 订阅