python 外部程序 交互_使用Python与其他程序交互
如果你真正想找的是一個很好的借口來教自己如何與其他應用程序交互,這可能不是最好的一個。網絡瀏覽器很混亂,時間安排不可預測,等等。所以,你承擔了一項非常艱巨的任務,如果你用通常的方式去做,那將非常容易(直接與服務器對話,直接創建文本文件,等等,所有這些都不必接觸任何其他程序)。
但如果你真的想與其他應用程序交互,有多種不同的方法,哪種方法更合適取決于你需要處理的應用程序類型。一些應用程序被設計成可以從外部實現自動化。在Windows上,這幾乎總是意味著它們是一個COM接口,通常有一個IDispatch接口,您可以使用pywin32的COM包裝器;在Mac上,它意味著一個AppleEvent接口,您可以使用ScriptingBridge或appscript;在其他平臺上,沒有通用標準。IE(但可能不是Chrome)和Word都有這樣的接口。
有些應用程序有一個非GUI界面,無論是可以用popen驅動的命令行,還是可以通過ctypes加載的DLL/SO/DYLIB。或者,理想情況下,其他人已經為您編寫了Python綁定。
有些應用程序只有GUI,沒有辦法實現GUI自動化。您可以在較低的級別上完成這項工作,方法是在Windows上通過pywin32發送WM嬡消息,在Mac上使用可訪問性api等,或者在較高的級別上使用pywinauto之類的庫,或者可能在selenium的很高級別,或者使用為自動化特定應用而構建的類似工具。
所以,你可以用任何東西來實現這一點,從selenium for Chrome和COM automation for Word,到自己制作所有的WM_u消息。如果這是一個學習練習,問題是你今天想學哪些東西。
讓我們從COM自動化開始。使用^{},您可以直接訪問應用程序自己的腳本界面,而無需從用戶手中控制GUI,了解如何導航菜單和對話框等。這是編寫“Word宏”的現代版本——宏可以是外部腳本,而不是內部腳本,而且不必用VB編寫,但它們看起來很相似。腳本的最后一部分如下所示:word = win32com.client.dispatch('Word.Application')
word.Visible = True
doc = word.Documents.Add()
doc.Selection.TypeText(my_string)
doc.SaveAs(r'C:\TestFiles\TestDoc.doc')
如果你看Microsoft Word Scripts,你可以看到一堆例子。但是,您可能會注意到它們是用VBScript編寫的。如果你四處尋找教程,它們都是為VBScript(或舊的VB)編寫的。大多數應用程序的文檔都是為VBScript(或VB、.NET,甚至低級COM)編寫的。我所知道的所有使用Python中的COM自動化的教程,比如Quick Start to Client Side COM and Python,都是為那些已經知道COM自動化的人編寫的,他們只想知道如何從Python中實現它。事實上,微軟一直在改變所有東西的名稱,這使得搜索變得更加困難,你怎么能猜到google for OLE automation、ActiveX scripting、Windows scripting House等與學習COM自動化有什么關系呢?所以,我不知道該推薦什么來開始。我可以保證,這一切都很簡單,因為它看起來從上面的例子,一旦你學會了所有的胡說八道,但我不知道如何度過最初的障礙。
無論如何,并不是所有的應用程序都是自動化的。有時,即使是這樣,描述GUI操作(用戶在屏幕上單擊的內容)也比用應用程序的對象模型來思考要簡單得多。”選擇第三段“很難用GUI術語描述,但是”選擇整個文檔“很容易,只需點擊control-A,或者轉到Edit菜單并選擇All。GUI自動化比COM自動化要困難得多,因為你要么必須向應用程序發送與Windows本身發送的消息相同的消息來表示你的用戶操作(例如,請參閱“Menu Notifications”),要么,更糟的是,從e左上角,單擊,鼠標向下16像素,再次單擊“以說”打開“文件”菜單,然后單擊“新建”。
幸運的是,有一些像^{}這樣的工具可以將這兩種GUI自動化的東西打包起來,使之簡單得多。還有像^{}這樣的工具可以幫助您找出要發送的命令。如果你不喜歡Python,那么還有一些工具,比如^{}和^{},它們甚至比使用swapy和pywinauto更容易,至少在你開始使用時是這樣。這樣,腳本的最后一部分可能看起來像:word.Activate()
word.MenuSelect('File->New')
word.KeyStrokes(my_string)
word.MenuSelect('File->Save As')
word.Dialogs[-1].FindTextField('Filename').Select()
word.KeyStrokes(r'C:\TestFiles\TestDoc.doc')
word.Dialogs[-1].FindButton('OK').Click()
最后,即使有了所有這些工具,web瀏覽器也很難實現自動化,因為每個web頁面都有自己的菜單、按鈕等,它們不是Windows控件,而是HTML。除非你想一直到“移動鼠標12像素”的水平,否則很難處理這些問題。這就是它中的selenium來編寫web gui腳本的地方,就像pywinauto編寫Windows gui腳本一樣。
總結
以上是生活随笔為你收集整理的python 外部程序 交互_使用Python与其他程序交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive 行转列和列转行的方法_Hive
- 下一篇: golang获取结构体中的tag_26.