Tôi muốn có thể để có được nội dung của stdout và stderr khi tôi chạy kịch bản sau đây trên cửa sổ sử dụng pythonw.exe:trình con Popen không làm việc với pythonw.exe
import subprocess
import sys
import os
import string
import time
tmpdir = 'c:/temp'
cmd = 'dir c:'
tmpfile = "tmp_%f" % (time.time())
tmpfile = os.path.normpath(os.path.join(tmpdir,tmpfile))
tmpfile2 = tmpfile+".bat"
tmpfile3 = tmpfile+".txt"
fa = open(tmpfile2,'w')
fa.write("@ECHO OFF > NUL\n")
fa.write('call '+cmd+"\n")
fa.close()
wcmd = []
wcmd.append(tmpfile2)
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
fb = open(tmpfile3,'w')
fb.write("\n")
fb.write(tmpfile2+"\n")
try:
procval = subprocess.Popen(wcmd, startupinfo=startupinfo, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()
fb.write(str(procval)+"\n")
fb.write("Sucess")
fb.close()
except:
fb.write(str(procval)+"\n")
fb.write("Failure")
fb.close()
Khi tôi thực hiện nó bằng cách sử python .exe Tôi nhận được kết quả mong đợi. Khi tôi chạy nó bằng pythonw.exe Tôi kết thúc ở bên ngoại lệ. Nếu tôi chạy popen chỉ với lệnh và startupinfo cờ lệnh sẽ hoàn thành thành công nhưng không có quyền truy cập vào dữ liệu trong tiến trình con. Tất cả mọi thứ mà tôi đọc nói rằng điều này sẽ làm việc nhưng phải thiếu một cái gì đó. Mọi sự trợ giúp sẽ rất được trân trọng.
Cảm ơn, Randy
Bạn có gặp phải thông tin ngoại lệ không? – jdi
Tôi đã thử nhưng không thành công. Điều này là dễ dàng enought để nhân rộng vì vậy bất kỳ ý tưởng về làm thế nào để có được thông tin ngoại lệ và sẽ cung cấp cho nó một shot – user1352650
Tôi không hiểu. Bạn có mã truy cập một khối chung trừ khối nhưng bạn không thể cho chúng ta thấy ngoại lệ đó? Thay đổi nó thành: "ngoại trừ ngoại lệ, e" và đăng nhập e. Hoặc chỉ cần tăng ở cuối để bạn có thể thấy lỗi là gì – jdi