У меня есть некоторый код Python, который работает правильно, когда я использую python.exe для его запуска, но терпит неудачу, если я использую pythonw.exe.
def runStuff(commandLine): outputFileName = 'somefile.txt' outputFile = open(outputFileName, "w") try: result = subprocess.call(commandLine, shell=True, stdout=outputFile) except: print 'Exception thrown:', str(sys.exc_info()[1]) myThread = threading.Thread(None, target=runStuff, commandLine=['whatever...']) myThread.start()
Сообщение, которое я получаю:
Exception thrown: [Error 6] The handle is invalid
Однако, если я не укажу параметр 'stdout', subprocess.call() запустится нормально.
Я вижу, что pythonw.exe может сам перенаправлять вывод, но я не понимаю, почему я не могу указать стандартный вывод для нового потока.