Я использую Pyinstaller 3.6, Python 3.8.3, и когда я компилирую этот код (используя флаг --onefile):
import subprocess
try:
output = subprocess.run('dir', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
toWrite = output.stdout.decode('ansi')
f = open('output.txt', 'w')
f.write(toWrite)
f.close()
except Exception as e:
f = open('output.txt', 'w')
f.write(str(e))
f.close()
exit(0)
, все работает нормально. Вот файл output.txt:
Volume in drive C has no label.
Volume Serial Number is E612-C89D
Directory of C:\Users\trolo\OneDrive\Desktop\progs\tests\dist
14.07.2020 12:11 <DIR> .
14.07.2020 12:11 <DIR> ..
14.07.2020 11:58 9я777я078 test3.exe
1 File(s) 9я777я078 bytes
2 Dir(s) 12я544я409я600 bytes free
Но когда я добавляю флаг --noconsole
, я получаю следующее в файле output.txt:
[WinError 6] The handle is invalid
Что такое неправильно, как заставить его работать, не показывая окно консоли?