Profilo di FaMel_79

Nome FaMel_79
Indirizzo email fabiomeloni98f@gmail.com
AvatarAvatar utenti
Messaggi2
  • 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
  • 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 ---