2016-11-23 62 views
-2

我正在学习python,我很喜欢它它如何帮助我自动化一些日常例程。我用我的所有问题谷歌,直到现在我一直非常成功。但是这一次我真的被卡住了,并且已经花了2天时间。python子进程调用%s和*内部adb外壳

在下面的代码不工作,因为这里%s和*在同一行

from Tkinter import * 
import subprocess as sp 
regLists = ['1b7', '1b6', '209', '197'] 
valLists = ['23', '80', 'ab', '73'] 
for regs,vals in zip(regLists,valLists): 
     sp.call('adb shell "echo %s %s > /d/asoc/*-snd-card*/*_code*/code_reg"'%(regs,vals), shell=True) 

错误:

Error: /system/bin/sh: can't create /d/asoc/*-snd-card*/*_code*/code_reg: 
No such file or directory 
  • a)所述路径名是每个设备不同
  • b)*用于查找linux目录里面的路径名

工作的代码如下所示,因为没有*和整个路径被提及

sp.call('adb shell "echo %s %s > /d/asoc/xyz-snd-card-device45/ffde_code-fffb/code_reg"'%(regs,vals), shell=True) 

请谁能帮我怎么可以改变上面的代码,这样我就可以使用上面的代码...

回答

0
for regs,vals in zip(regLists,valLists): 
    echo = "echo {} {} > /d/asoc/*-snd-card*/*_code*/code_reg".format(regs,vals) 
    sp.check_call(["adb", "shell" , echo]) 
+0

对不起没有工作:打印回波显示: 回声1B7 23>/d/ASOC/* - SND卡*/* _ code */code_reg – Miraage

+0

不工作不是一个好的解释。你有什么错误? – tinySandy

+0

对不起..第一次使用堆栈溢出并点击“输入”错误 理想的方式回声应该看起来像: 回声1b7 23>/d/asoc/xyz-snd-card-device45/ffde_code-fffb/code_reg – Miraage

0

谢谢大家的支持。 我一定会尝试上面提到的for和find选项来更熟悉python编程。与此同时,在谷歌上进行了更多的调试,发现了另一个工作解决方案,如下所示。 通过使用& &运算符,代码按预期工作。

sp.call('adb shell "cd /d/asoc/*snd-card*/*_code* && echo %s %s > code_reg"'%(regs,vals), shell=True) 

PS:我还需要检查sp.call之间的差异,sp.check_output

+0

。如果您的文件夹名称模式会扩展为多个条目,此代码也会失败。 –