Sua maneira de obter a saída de chamadas do sistema é bastante desatualizada. Use
subprocess.check_output()
em vez disso:
#!/usr/bin/env python3
import subprocess
f = "/home/jacob/Desktop/output.txt"
lines = subprocess.check_output(["dpkg", "-l"]).decode("utf-8").splitlines()
with open(f, "wt") as out:
for l in lines:
if l.startswith("ii"):
out.write(l.split()[1] + "\n")
Substitua f
pelo caminho real do arquivo de saída.
Arquivo de saída:
...
...
apg
app-install-data
app-install-data-partner
apparmor
apport
apport-gtk
apport-retrace
apport-symptoms
appstream
apt
apt-transport-https
...
...
Nota
A solução acima criará um arquivo, terminando com uma linha vazia. Se isso for um problema, use a solução abaixo.
#!/usr/bin/env python3
import subprocess
f = "/home/jacob/Bureaublad/output.txt"
lines = subprocess.check_output(["dpkg", "-l"]).decode("utf-8").splitlines()
open(f, "wt").write(
"\n".join([l.split()[1] for l in lines if l.startswith("ii")])
)