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