python子进程调用%s和*内部adb外壳
问题描述:
我正在学习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)
请谁能帮我怎么可以改变上面的代码,这样我就可以使用上面的代码...
答
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])
答
谢谢大家的支持。 我一定会尝试上面提到的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
。如果您的文件夹名称模式会扩展为多个条目,此代码也会失败。 –
对不起没有工作:打印回波显示: 回声1B7 23>/d/ASOC/* - SND卡*/* _ code */code_reg – Miraage
不工作不是一个好的解释。你有什么错误? – tinySandy
对不起..第一次使用堆栈溢出并点击“输入”错误 理想的方式回声应该看起来像: 回声1b7 23>/d/asoc/xyz-snd-card-device45/ffde_code-fffb/code_reg – Miraage