Python执行shell

问题

最近一个脚本遇到了一个问题,就是python里面使用os.system无法顺利执行,再排查过程中顺利解决了这个问题

解决思路

无法使用变量?

一开始的脚本是这样的

1
os.system(f"gupload -u ********@qq.com -p password -a 'Running' /home/ubuntu/github/strava-backup/stravabackup/output/activities/2022/*{lastrun}*.fit")

然后没有执行成功,再想是不是因为{lastrun}没有生效呢,然后改成了这样

1
2
command = f"gupload -u ********@qq.com -p password -a 'Running' /home/ubuntu/github/strava-backup/stravabackup/output/activities/2022/*{lastrun}*.fit"
os.system(command)

改成这样发现还是不行,咋办呢?

打印错误

然后开始想把错误打印出来,可是用 > log 的方式发现并不行,网上搜到了os.system会有result,那么就把result输出出来看看吧(result=0执行成功),借助wxpusher把result输出到微信,所以脚本又改成了这样

1
2
3
4
command = f"gupload -u ********@qq.com -p password -a 'Running' /home/ubuntu/github/strava-backup/stravabackup/output/activities/2022/*{lastrun}*.fit"
result = os.system(command)
if result is not 0:
wxpusher(result)

得到的输出结果是32512,网上查到是因为执行的命令需要写全目录,就改成了这样

1
2
3
4
5
command = f"/home/ubuntu/.local/bin/gupload -u ********@qq.com -p password -a 'Running' /home/ubuntu/github/strava-backup/stravabackup/output/activiti
es/2022/*{lastrun}*.fit"
result = os.system(command)
if result is not 0:
wxpusher(result)

问题解决


Python执行shell
http://example.com/2022/09/26/python执行shell/
作者
WangQiang
发布于
2022年9月26日
许可协议