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命令当中

 

posted @ 2021-02-17 22:59  wybert  阅读(434)  评论(0编辑  收藏  举报