0

以前のターミナルウィンドウコマンドからの出力を取得して再度入力するpythonスクリプトに取り組んでいます。ここにコードがあります

 pathCmd = './adb shell pm path com.example.deliveryupdater'
 pathData = os.popen(pathCmd,"r")
 for line in pathData:
  path = line
  print line   

if line.startswith("package:"):
   apkPath = line[8:] 
   print apkPath
pullCmd = './adb pull ' + apkPath
pullData = os.popen(pullCmd,"r")

出力は次のとおりです: /data/app/com.example.deliveryupdater-1.apk

' 存在しません/data/app/com.example.deliveryupdater-1.apk

パスが存在しないと表示されます。パスを次のようにハードコードしたとき

 pullCmd = './adb pull /data/app/com.example.deliveryupdater-1.apk'
 pullData = os.popen(pullCmd,"r")

.apk データが取得されます。

3886 KB/s (2565508 bytes in 0.644s)

文字列を変数として渡す方法はありますか? 私はここで何か悪いことをしていますか? 助けてください

4

1 に答える 1

2

エラー メッセージは何が問題なのかを示しています。そのパス/data/app/com.example.deliveryupdater-1.apk(newline)は存在しません。おそらく、ディレクトリに改行で終わるファイル名はありません。ファイルまたはそのようなものからの行を繰り返し処理していると思います。これにより、改行がある理由が説明されます。[8:-1]の代わりに[8:]、またはおそらくその行で単にスライスしないのはなぜですか.rstrip()(これは、ファイルの最後の行にない可能性があるため、行に改行がない場合でも機能します)。

if line.startswith("package:"):
   apkPath = line[8:].rstrip()
   print apkPath
pullCmd = './adb pull ' + apkPath
pullData = os.popen(pullCmd,"r")
于 2013-09-16T23:16:19.920 に答える