FaMel_79
Profilo di
Nome | FaMel_79 |
---|---|
Indirizzo email | fabiomeloni98f@gmail.com |
Avatar | |
Messaggi | 2 |
-
- 2024-12-19 09:46:38
- Re: Chiarimento sull'uso del metodo "subprocess.Popen".
- Forum >> Programmazione Python >> Scripting
- Ciao nuzzopippo,
si le operazioni di I/O sono da sistema Windows verso un dispositivo android collegato via usb al pc e viceversa. Il tool "adb.exe" è un sw free reperibili sul web; a me serve per trasferire file, immagini, ecc... dal pc windows verso lo smartphone android.
Il mio scopo è:
1) runnare l'eseguibile "adb.exe" ed avere il "PID" specifico del processo "adb.exe" in running;
2) dare un comando tipo "adb devices" utilizzando lo stesso PID del punto 1;
3) catturare l'output di ritorno del punto 2;
4) eventualmente dare altri comandi tipo adb push/adb pull sempre utilizzando il PID del punto 1;
5) catturare l'output di ritorno del punto 4;
6) uscire dallo script con un comando specifico tipo "exit" per terminare lo script.
Le operazioni di apertura dell'eseguibile ho pensato di farle con il comando:
process = subprocess.Popen([adb_path, command], shell=True, text=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # line buffering
L'iterazione con i comandi successivi (adb push/adb pull) la farei con un ciclo while e if con un break di uscita.
L'invio dei comandi "adb push/adb pull" verso il processo "adb.exe" lo sto eseguendo con il comando:
stdout_value=process.stdin.write(command)
Credo che il problema sia nel punto riportato sopra "process.stdin.write(command)"; ogni stringa che viene passata con la variabile "command", viene restituito un valore numerico sulla variabile "stdout_value".
Ho pensato questo modo per interagire con l'eseguibile "adb.exe" ma altri metodi per gestire il flusso operativo riportato sopra (punti 1 - 6) sono ben accetti.
Grazie per il supporto.
F
-
- 2024-12-18 17:15:21
- Chiarimento sull'uso del metodo "subprocess.Popen".
- Forum >> Programmazione Python >> Scripting
- Buongiorno,
sono un nuovo utente del forum alla ricerca di qualche consiglio... Avrei bisogno di qualche chiarimento su come utilizzare il metodo "subprocess.Popen" per gestire l'eseguibile "adb.exe" durante le operazioni di I/O su smartphone Android. Di seguito condivido lo script realizzato e l'output ottenuto.
Code:
import subprocess
# Avvio del processo
command = ""
process = ""
adb_path = "D:/ADBandFastboot/adb.exe"
process = subprocess.Popen([adb_path, command], shell=True, text=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # line buffering
try:
command = 'D:/ADBandFastboot/adb.exe devices'
stdout_value=process.stdin.write(command)
print(process.args)
print(process.stdin.write)
print(stdout_value)
stdout, stderr = process.communicate(timeout=20)
print("Output:", stdout)
print("Errori:\n", stderr)
except subprocess.TimeoutExpired:
print("Il processo ha impiegato troppo tempo e verrà terminato.")
process.kill()
except Exception as e:
print("Si è verificato un errore:", e)
finally:
process.stdin.close() # chiude i flussi stdin
Output dopo l'esecuzione:
['D:/ADBandFastboot/adb.exe', '']
<built-in method write of _io.TextIOWrapper object at 0x0000012053511D20>
38
Output:
Errori:
Android Debug Bridge version 1.0.35
Revision fc2a139a55f5-android
-a - directs adb to listen on all interfaces for a connection
--- Ultima modifica di FaMel 79 in data 2024-12-18 17:31:12 ---
--- Ultima modifica di FaMel 79 in data 2024-12-18 17:40:09 ---