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)