python 实践 | 使用subprocess,与子进程交互,卡死,直到子进程dump掉

python基本语法,早就熟悉了。可是没有实践,语法就只是语法,并不能真正的掌握这个语言。有空就写一写。 **svn统计工具的python版本** 最为第一个实践吧

问题1:subprocess创建进程和交互,使用communicate,与子进程交互,卡死,直到子进程dump掉?

cmd = "svn info --no-auth-cache --non-interactive --username='%s' --password='%s' %s" %(name,pwd,url)

p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

(stdout,stderr) = p.communicate(input=None)

分析解决: 调用子进程卡死

#subprocess模块,是为了替换老的os.system模块,fork一个新的进程并与之通信。Popen创建进程,并与进程进行复杂交互,communicate与子进程交互,stdin/stdout/stderr 必须设置为PIPE

1. 检查发现cmd没有问题,创建子进程ok,使用communicate子进程交互也对。

2. 再次检查cmd,发现了问题username='%s'password='%s',多了一个单引号,删除单引号。

修改后的命令行:

cmd = "svn info --no-auth-cache --non-interactive --username=%s --password=%s %s " %(name,pwd,url)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值