這裡我們用Windows下的shell來舉例:
subprocess *
為了方便你理解,我們用一個很簡單的一段程式碼來說明:
Python3.5,加入了run()方法來進行更好的操作)
#然後我們繼續##這些訊息是不是很眼熟?這都是cmd的標準輸出!
然後就會輸出這些:
我們剛剛所寫入的資訊"echo Hellwworlds\r\n"已經被寫入了,看起來確實成功了!
注意一下我們使用了p.stdin.
flush() 來對輸入快取區進行刷新,輸出的資訊也需要一個"\r\n",至少在Windows 系統下必須這樣做,否則只刷新(p.stdin.flush)的話是無效的;我們到底做了什麼?
我們成功的創建了子程式cmd.exe,並且寫入"echo Hellwworlds\r\n" ,然後cmd取得了並且執行,於是返回Hellwworlds,這就是一次很簡單的讀寫交互!更高級的使用
既然我們已經可以簡單的讀寫了,那麼加點for和threading 吧,味道也許更佳喔~
#run.py from subprocess import * import threading import time p =Popen('cmd.exe',shell=True,stdin=PIPE,stdout=PIPE) def run(): global p while True: line = p.stdout.readline() if not line: #空则跳出 break print(">>>>>>",line.decode("GBK")) print("look up!!! EXIT ===") #跳出 w =threading.Thread(target=run) p.stdin.write("echo HELLW_WORLD!\r\n".encode("GBK")) p.stdin.flush() time.sleep(1) #延迟是因为等待一下线程就绪 p.stdin.write("exit\r\n".encode("GBK")) p.stdin.flush() w.start()
很好很好,猜猜輸出什麼?
有很多換行的原因是cmd回傳的結果有換行,然後print輸出會加上一個換行,所以就換了兩行,你可以考慮使用 sys.stdout .write 來輸出,這樣就沒有附加的換行了
這樣的話,你可以製作一個基礎的讀寫了,那麼我們開始封裝吧。
封裝Pipe
# 不廢話了,直接上程式碼,如果你真的想學會的話,請認真自己讀讀代碼。110行
我們實作了將所有的流程集中在一個類別裡面,並且可以定義三個參數,退出回饋
函數
你可以看見,我們的指令都順序的執行了。當然了這裡面還有OS的功勞。
那麼你的可擴充的Pipe類別應該已經建構完畢了吧?
A: 我之所以要在這種程式碼前面加入行數的原因就是為了防止你複製;因為你可能永遠不會明白這裡究竟發生了什麼,而是只懂得了使用。
順便一提:
最好去參考一下官方的文檔,已經講得非常詳細了。 subprocess.Popen.communicate 或許更適合你,看看你要做什麼事。
以上是詳解Python3利subprocess實作管道pipe互動操作讀/寫通訊方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

使用NumPy創建多維數組可以通過以下步驟實現:1)使用numpy.array()函數創建數組,例如np.array([[1,2,3],[4,5,6]])創建2D數組;2)使用np.zeros(),np.ones(),np.random.random()等函數創建特定值填充的數組;3)理解數組的shape和size屬性,確保子數組長度一致,避免錯誤;4)使用np.reshape()函數改變數組形狀;5)注意內存使用,確保代碼清晰高效。

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增強可讀性,和Boostsperformance.Shere'shore'showitworks:1)較小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1)Listscanholdelementsofdifferenttypes,2)theyaredynamic,allowingeasyadditionsandremovals,3)theyofferintuitiveoperationslikeslicing,but4)theyarelessmemory-efficientandslowerforlargedatasets.

toAccesselementsInapyThonArray,useIndIndexing:my_array [2] accessEsthethEthErlement,returning.3.pythonosezero opitedEndexing.1)usepositiveandnegativeIndexing:my_list [0] fortefirstElment,fortefirstelement,my_list,my_list [-1] fornelast.2] forselast.2)

文章討論了由於語法歧義而導致的Python中元組理解的不可能。建議使用tuple()與發電機表達式使用tuple()有效地創建元組。 (159個字符)

本文解釋了Python中的模塊和包裝,它們的差異和用法。模塊是單個文件,而軟件包是帶有__init__.py文件的目錄,在層次上組織相關模塊。

文章討論了Python中的Docstrings,其用法和收益。主要問題:Docstrings對於代碼文檔和可訪問性的重要性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。