看板 Python 關於我們 聯絡資訊
如題,因為我有一個程式是需要在背景執行,有點server的程式, 所以會像這樣執行,然後如果手動執行的話會在cmd line秀出一些訊息的~ ${process} Start Process server.exe 手動執行大概像這樣, C:\server.exe server is running 然後我在robot想看他輸出的訊息, Log To Console ${process.stdout} Log To Console ${process} 但都一直看不到,輸出的訊息是長這樣: <_io.BufferedReader name=5> <subprocess.Popen object at 0x000001D0CB1D2160> 也有試著加過shell=true了,結果一樣, 另外,我也試了改用Run Process,結果變只有輸出我執行的檔案 C:\server.exe .<result object with rc 0> 不知道這邊有沒有熟悉robot的大神可以幫忙解答一下的? 感謝萬分。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.217.117 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1694770169.A.870.html
zerof: Robot 完整的 code 呢?你 process 怎麼執行的 09/15 20:35
wuyiulin: 什麼Robot,你用哪方的API? 09/16 07:47
starlin2: Robot framework https://robotframework.org/ 09/17 22:36
starlin2: Run Process是robot預設的指令。 09/17 22:37
lycantrope: 可能要把stdout=sys.stdout 09/18 11:54
zerof: 我問的是你 Start Process 帶的參數。 09/19 12:52
zerof: 如果你實際上是跟第三行一樣的寫法,"subporcess stdout" 09/19 12:53
zerof: 自己研究一下。 (btw, "Log to console" == print) 09/19 12:53
lycantrope: Robot就是用subprocess.Popen,才叫你串stdout 09/19 15:11
starlin2: 我在Start Process沒有帶參數,有建議的參數嗎? 09/20 08:51
lycantrope: 看一下process.stderr,server.exe不一定輸出在stdout 09/20 10:30
Hsins: process.stdout.read() 09/22 14:34
Hsins: 東西都還在 io streaming 裡, 這東西又不是字串當然不給你 09/22 14:36
Hsins: log 啊。 09/22 14:36
lycantrope: 查robot doc,process.stdout就stdout才會猜server.exe 09/22 15:39
lycantrope: 根本不是print在stdout 09/22 15:39
s860134: buffer 10/11 09:42
s860134: 改成 stdout.read() 10/11 09:43
s860134: 12樓第一句話就可以解了 10/11 09:45