out=subprocess.check_output("""cat /etc/passwd""", universal_newlines=True, shell=True)
  for line in out.splitlines():
        elem=subprocess.check_output(["echo", "line", "|", "cut", "-d:", "-f1"], 
                                     universal_newlines=True, shell=True)
        lboxS.insert(END,elem)
1
Daniel Becerra 13 marzec 2021, 22:11

1 odpowiedź

Najlepsza odpowiedź
elem=subprocess.check_output(["echo", "line", "|", "cut", "-d:", "-f1"], universal_newlines=True, shell=True)

Jeśli używasz shell=True, musisz przejść pojedynczy łańcuch dla args (jak zrobiłeś z out):

elem = subprocess.check_output("echo '"+line+"'|cut -d: -f1", text=True, shell=True).rstrip()

Lub

elem = subprocess.check_output("echo '%s'|cut -d: -f1"%line, text=True, shell=True).rstrip()

Lub

elem = subprocess.check_output(f"echo '{line}'|cut -d: -f1", text=True, shell=True).rstrip()
0
Armali 13 marzec 2021, 20:19