zoukankan      html  css  js  c++  java
  • Bash与python混合编程

    由于很多的数据类的api很多都是基于bash的,虽然开发的会有python版本,但很多都是阉割的版本的。

    由于bash本身的限制以及自己对bash没有特别熟练,因此比较好的解决方案是使用python和bash混合编程

    这里注意的是在使用大量的bash命令工作的时候,特别是命令前后存在关联的时候,不能分步使用os.system()来分开执行单独的命令。

    os.system 命令可以理解为一个进程,这个时候最好的是把所有的命令写在一起,命令分行的时候会分步执行

    如在python文件中

    cmd = """export API_TOKEN=%s
            export SERVER_URL=%s
            export PERSISTENT_ID=%s
            curl -H "X-Dataverse-key:$API_TOKEN" -X POST -F "file=@%s" -F 'jsonData=%s'  "$SERVER_URL/api/files/:persistentId/replace?persistentId=$PERSISTENT_ID"
    
            sleep 10
    
            export PERSISTENT_ID=%s
            export MAJOR_OR_MINOR=major
            curl -H "X-Dataverse-key: $API_TOKEN" -X POST "$SERVER_URL/api/datasets/:persistentId/actions/:publish?persistentId=$PERSISTENT_ID&type=$MAJOR_OR_MINOR"
    
    
            """%(API_TOKEN,SERVER_URL,file_id,file_path,"""{"description":"My description.","categories":["Data"],"forceReplace":false}""",dataset_id)

    os.system(cmd)

    以上程序会分开在一个进程里面的执行每一行的命令

    利用%格式化字符串来传递变量和参数到bash命令当中

  • 相关阅读:
    碰到一个在app内部浏览器锚点异常的问题
    常用js方法
    preg_match_all正则表达式的基本使用
    无线路由器WDS 桥接设置方法
    链表和数组的区别在哪里?
    php报错: PHP Warning: PHP Startup: memcache: Unable to initialize module
    mysql修改密码
    快速排序
    vuex到底是个啥
    vue实现简单表格组件
  • 原文地址:https://www.cnblogs.com/wybert/p/14410149.html
Copyright © 2011-2022 走看看