2016-11-23 4 views
-2

Я изучаю python, и я люблю его, как он может помочь мне автоматизировать некоторые из моих ежедневных процедур. Я использую google для всех моих вопросов, и до сих пор я был очень успешным. Но на этот раз я действительно застрял и уже провел 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 
  • а) имя пути отличается для каждого устройства
  • 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>/д/Asoc/* - SND-карты */* _ code */code_reg – Miraage

+0

Не работайте не является хорошим объяснением. Какая у вас ошибка? – tinySandy

+0

К сожалению .. первый раз с помощью переполнения стека и нажмите кнопку "войти" по ошибке идеального способом эха должны выглядеть следующим образом: эха 1B7 23>/d/АСКИ/хуг-SND-карты device45/ffde_code-FFFB/code_reg – Miraage

0

Спасибо всем за поддержку. Я, конечно же, попробую вариант для поиска и поиска, упомянутый выше, чтобы лучше ознакомиться с программированием на питоне. В то же время, больше отладки в Google и нашел другое рабочее решение, как показано ниже. Используя код & &, код работает так, как ожидается.

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

снова. этот код также потерпит неудачу, если шаблон имени папки будет расширен до нескольких записей. –

Смежные вопросы