最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Windows平臺(tái)Python編程必會(huì)模塊之pywin32介紹

 更新時(shí)間:2019年10月01日 12:57:15   作者:黑月教主  
在Windows平臺(tái)上,從原來(lái)使用C/C++編寫原生EXE程序,到使用Python編寫一些常用腳本程序,成熟的模塊的使用使得編程效率大大提高了

在Windows平臺(tái)上,從原來(lái)使用C/C++編寫原生EXE程序,到使用Python編寫一些常用腳本程序,成熟的模塊的使用使得編程效率大大提高了。

不過(guò),python模塊雖多,也不可能滿足開(kāi)發(fā)者的所有需求。而且,模塊為了便于使用,通常都封裝過(guò)度,有些功能無(wú)法靈活使用,必須直接調(diào)用Windows API來(lái)實(shí)現(xiàn)。

要完成這一目標(biāo),有兩種辦法,一種是使用C編寫Python擴(kuò)展模塊,或者就是編寫普通的DLL通過(guò)python的ctypes來(lái)調(diào)用,但是這樣就部分犧牲掉了Python的快速開(kāi)發(fā)、免編譯特性。

還好,有一個(gè)模塊pywin32可以解決這個(gè)問(wèn)題,它直接包裝了幾乎所有的Windows API,可以方便地從Python直接調(diào)用,該模塊另一大主要功能是通過(guò)Python進(jìn)行COM編程。

該項(xiàng)目是開(kāi)源的,項(xiàng)目地址是:https://github.com/mhammond/pywin32

安裝時(shí)可以直接使用pip執(zhí)行“pip install pywin32”來(lái)安裝它。

安裝完畢后,在Python安裝路徑下的Lib\site-packages\win32可以看到所有的API支撐模塊,Lib\site-packages\win32com下則是COM的支撐模塊。

在Lib\site-packages下有一個(gè)PyWin32.CHM幫助文件,相信對(duì)Windows編程有一定基礎(chǔ)的,看了這個(gè)幫助文件就能很快上手。

簡(jiǎn)單說(shuō),pywin32把Windows API按照功能分了一些大類,每一個(gè)大類作為一個(gè)模塊。以下是所有的模塊:

mmapfile odbc perfmon servicemanager timer win2kras win32api win32clipboard win32console
win32cred win32crypt win32event win32evtlog win32file win32gui win32help win32inet win32job
win32lz win32net win32pdh win32pipe win32print win32process win32profile win32ras win32security
win32service win32trace win32transaction win32ts win32wnet winxpgui

比如文件類API就在模塊win32file中,進(jìn)程類API在模塊win32process中。

在使用的時(shí)候,按需導(dǎo)入相關(guān)模塊就行了,win32con則定義了所有的常量,幾乎是必不可少的,一些難以分類的API則在模塊win32api中(大部分是kernel32.dll導(dǎo)出的API)。

部分模塊之間還存在一些交叉,比如CreateFile的參數(shù)中用到的GENERIC_READ常量,在win32con中有定義,在win32file中也有定義。

用戶只要大概知道這個(gè)是文件API用到的常量,那么不管你寫win32file.GENERIC_READ還是win32con.GENERIC_READ都是可以的。

關(guān)閉句柄用的CloseHandle函數(shù)也是在兩個(gè)模塊中都有定義的。

需要注意的是,微軟提供的Wsa系列網(wǎng)絡(luò)API也都在win32file模塊中,因?yàn)楹芏嗖僮飨到y(tǒng)都是把套接字也用為文件對(duì)象來(lái)操作的。

如果你不清楚要使用的API在哪個(gè)模塊中,那就到幫助文件里搜索一下,一定會(huì)給你答案的。

如果你只是對(duì)pywin32中如何調(diào)用某個(gè)API不熟悉,那么查看Pywin32.CHM就足夠了,如果你對(duì)API本身的參數(shù)定義和使用不熟悉,那還得繼續(xù)看MSDN。

下面來(lái)寫一個(gè)Helloworld作為開(kāi)始吧:

import win32api
import win32con
win32api.MessageBox(None,"Hello,pywin32!","pywin32",win32con.MB_OK)

效果如下:

在Lib\site-packages\win32\Demos目錄下有許多例子,如果你還不清楚pywin32怎么上手,來(lái)看看這些例子就知道了。

比如使用API進(jìn)行文件操作:

# This is a "demo" of win32file - it used to be more a test case than a
# demo, so has been moved to the test directory.
 
# Please contribute your favourite simple little demo.
import win32file, win32api, win32con
import os
 
# A very simple demo - note that this does no more than you can do with
# builtin Python file objects, so for something as simple as this, you
# generally *should* use builtin Python objects. Only use win32file etc
# when you need win32 specific features not available in Python.
def SimpleFileDemo():
  testName = os.path.join( win32api.GetTempPath(), "win32file_demo_test_file")
  if os.path.exists(testName): os.unlink(testName)
  # Open the file for writing.
  handle = win32file.CreateFile(testName,
                 win32file.GENERIC_WRITE,
                 0,
                 None,
                 win32con.CREATE_NEW,
                 0,
                 None)
  test_data = "Hello\0there".encode("ascii")
  win32file.WriteFile(handle, test_data)
  handle.Close()
  # Open it for reading.
  handle = win32file.CreateFile(testName, win32file.GENERIC_READ, 0, None, win32con.OPEN_EXISTING, 0, None)
  rc, data = win32file.ReadFile(handle, 1024)
  handle.Close() #此處也可使用win32file.CloseHandle(handle)來(lái)關(guān)閉句柄
  if data == test_data:
    print "Successfully wrote and read a file"
  else:
    raise Exception("Got different data back???")
  os.unlink(testName)
 
if __name__=='__main__':
  SimpleFileDemo()

可以看一看上面的例子是如何使用Windows API的,相信對(duì)于pywin32模塊的使用會(huì)有一個(gè)初步的認(rèn)識(shí)。

有了pywin32模塊的輔助,對(duì)于Windows下的Python編程絕對(duì)是如虎添翼。

相關(guān)文章

  • python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)

    python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)

    在Python中,處理表格數(shù)據(jù)(比如CSV文件、Excel文件等)時(shí),我們通常會(huì)使用pandas庫(kù),因?yàn)樗峁┝素S富的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,下面,我將以處理CSV文件中的某一特定列的所有行數(shù)據(jù)為例,給出詳細(xì)、完整的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試

    詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試

    這篇文章主要介紹了詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python中字符串格式化的方法詳解

    Python中字符串格式化的方法詳解

    眾所周知,我們可以使用 print() 方法來(lái)輸出一個(gè)固定內(nèi)容的字符串,就像是 print("Hello, world!") 一樣,但是,在現(xiàn)實(shí)中,我們很多時(shí)候是需要輸出一些內(nèi)容不斷變化,或者內(nèi)容動(dòng)態(tài)生成的字符串,本文將介紹如何按照需要,在Python中格式化一個(gè)字符串
    2023-10-10
  • python爬蟲(chóng)入門教程--利用requests構(gòu)建知乎API(三)

    python爬蟲(chóng)入門教程--利用requests構(gòu)建知乎API(三)

    這篇文章主要給大家介紹了關(guān)于python爬蟲(chóng)入門之利用requests構(gòu)建知乎API的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • Python接口自動(dòng)化之接口依賴

    Python接口自動(dòng)化之接口依賴

    這篇文章主要介紹了python接口自動(dòng)化測(cè)試之接口數(shù)據(jù)依賴的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • 三分鐘時(shí)間教你用Python繪制春聯(lián)

    三分鐘時(shí)間教你用Python繪制春聯(lián)

    大家好,本篇文章主要講的是三分鐘時(shí)間教你用Python繪制春聯(lián),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python?seaborn數(shù)據(jù)可視化繪圖(直方圖,密度圖,散點(diǎn)圖)

    Python?seaborn數(shù)據(jù)可視化繪圖(直方圖,密度圖,散點(diǎn)圖)

    這篇文章主要介紹了Python?seaborn數(shù)據(jù)可視化繪圖(直方圖,密度圖,散點(diǎn)圖),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 怎么使用pipenv管理你的python項(xiàng)目

    怎么使用pipenv管理你的python項(xiàng)目

    本篇文章主要介紹了怎么使用pipenv管理你的python項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制

    Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制

    漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過(guò)濾過(guò)程,這篇文章主要為大家介紹了如何使用Matplotlib繪制漏斗圖,需要的小伙伴可以參考下
    2023-08-08
  • 一篇文章教你用Python繪畫一個(gè)太陽(yáng)系

    一篇文章教你用Python繪畫一個(gè)太陽(yáng)系

    這篇文章主要給大家介紹了關(guān)于如何利用Python繪畫一個(gè)太陽(yáng)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10

最新評(píng)論

宣汉县| 吉木萨尔县| 南召县| 荔波县| 沭阳县| 绥化市| 潜山县| 许昌县| 威海市| 洞口县| 岳阳县| 东阳市| 五指山市| 龙川县| 广州市| 柳河县| 前郭尔| 松桃| 永仁县| 封丘县| 磴口县| 九龙坡区| 闸北区| 广德县| 冕宁县| 明水县| 疏勒县| 武清区| 桂平市| 黔西| 大安市| 兴宁市| 华宁县| 江门市| 新蔡县| 开原市| 桐乡市| 武川县| 皋兰县| 重庆市| 阳泉市|