2014-04-15 78 views
0

基本上,我送一個命令,象這樣:如何防止命令行返回的字符串從印刷

proc = subprocess.Popen("ls",stdout=subprocess.PIPE) 
tmpStr = proc.stdout.read() 

這工作得很好,但它也打印tmpStr到屏幕上,這是我不想要的。我怎樣才能防止這一點?

+0

我在這裏嘗試相同的代碼,但它並沒有顯示任何信息,除非我稱之爲「印tmpStr」直接... – joaoricardo000

+0

我有同樣的經歷作爲@ JRicardo000。這是你正在使用的確切例子嗎?你在使用什麼平臺?是否有可能實際運行的命令是將某些內容打印到stderr而不是stdout? – dano

+0

@dano提到,你正在捕獲stdout而不是stderr。所以,你仍然會看到像「沒有這樣的文件或目錄」的錯誤消息。你的例子不太可能出錯...但通常你會想包含'stderr = subprocess.STDOUT'或類似的東西。 – tdelaney

回答

0

它可能只是打印,因爲你通過一個交互式提示符下鍵入其上運行的命令。如果您將該代碼放入一個文件並執行它,tmpStr將不會被打印出來。

+0

好猜測,但如果它是_exact_命令時,它不會在REPL打印,因爲相關的最後一條語句分配結果。 –

+0

@BurhanKhalid:你可能是對的。我的猜測是,他在一些非顯而易見的shell中運行這個shell,它會在運行時打印每個命令的結果。 –

+0

我是個白癡。就是這樣。 –