當前位置:首頁 » 編程語言 » pythonhandle

pythonhandle

發布時間: 2023-07-01 05:39:36

python編寫一個文件讀寫程序(命令行程序)

defreadfromfile(filename):
withopen(filename,'rt')ashandle:
returnhandle.read()

defappendtofile(filename,lines):
withopen(filename,'at')ashandle:
handle.writelines(lines)

defitercui():
while1:
content=raw_input()
ifcontentin('exit','quit'):
break
yieldcontent

if__name__=="__main__":
filename="record.log"
printreadfromfile(filename)
appendtofile(
filename,
[ln+' 'forlninitercui()]
)

㈡ python如何隨機讀取一行

#!/usr/bin/envpython
#coding:utf-8

defgetfilelines(filename,eol=' ',buffsize=4096):
"""計算給定文件有多少行"""
withopen(filename,'rb')ashandle:
linenum=0
buffer=handle.read(buffsize)
whilebuffer:
linenum+=buffer.count(eol)
buffer=handle.read(buffsize)
returnlinenum


defreadtline(filename,lineno,eol=" ",buffsize=4096):
"""讀取文件的指定行"""
withopen(filename,'rb')ashandle:
readedlines=0
buffer=handle.read(buffsize)
whilebuffer:
thisblock=buffer.count(eol)
ifreadedlines<lineno<readedlines+thisblock:
#inthisblock:findthelinecontent,andreturnit
returnbuffer.split(eol)[lineno-readedlines-1]
eliflineno==readedlines+thisblock:
#needcontinuereadlinerestpart
part0=buffer.split(eol)[-1]
buffer=handle.read(buffsize)
part1=buffer.split(eol)[0]
returnpart0+part1
readedlines+=thisblock
buffer=handle.read(buffsize)
else:
raiseIndexError


defgetrandomline(filename):
"""讀取文件的任意一行"""
importrandom
returnreadtline(
filename,
random.randint(0,getfilelines(filename)),
)


if__name__=="__main__":
importsys
importos
iflen(sys.argv)==1:
printgetrandomline("/home/tim/documents/users.csv")
else:
forfinfilter(os.path.isfile,sys.argv[1:]):
printgetrandomline(f)

對於超大文件建議用逐行或分塊的方式處理;逐行處理可能慢一些,但編碼更簡單清晰一點;上面給出的是按分塊方式處理的。

㈢ python中怎麼刪除文件中指定的行

刪除文件的某一行,可以跳過你要刪除的行進行讀寫,如:

1
2
3
4

data = open(filename, 'rt').readlines()
with open(filename, 'wt') as handle:
handle.writelines(data[:tobedeleted])
handle.writelines(data[tobedeleted+1:])

其中data是逐行讀取文件,

handle.writelines進行讀寫,跳過tobedeleted行

㈣ python嵌套C語言、調用外部C的dll,python實參如何傳遞並修改

handle = ctypes.c_int(0)
ret = lib.XF_OpenDev(0, ctypes.byref(handle))

handle作為指針傳進去後如果被改掉,返回的是一個c_int 或者c_long, 你可以通過handle.value來獲得可以在python中靈活運用的真正的python整形

㈤ Python html 模塊簡介

比如:

比如,數學符號 , ,可以直接獲得:

escape 將特殊字元 & , < 和 > 替換為HTML安全序列。如果可選的 flags quote 為 True (默認值),則還會翻譯引號字元,包括雙引號( " )和單引號( ' )字元。

將字元串 s 中的所有命名和數字字元引用 (例如 > , > , > ) 轉換為相應的 Unicode 字元。此函數使用 HTML 5 標准為有效和無效字元引用定義的規則,以及 HTML 5 命名字元引用列表 。

這個模塊定義了一個 HTMLParser 類,為 HTML(超文本標記語言)和 XHTML 文本文件解析提供基礎。

class html.parser.HTMLParser(*, convert_charrefs=True) 創建一個能解析無效標記的解析器實例。查找標簽(tags)和其他標記(markup)並調用 handler 函數。

用法:

通過調用 self.handle_starttag 處理開始標簽,或通過調用 self.handle_startendtag 處理結束標簽。標簽之間的數據通過以 data 為參數調用 self.handle_data 從解析器傳遞到派生類(數據可以分成任意塊)。如果 convert_charrefs 為 True ,則將字元引用自動轉換為相應的 Unicode 字元(並且 self.handle_data 不再拆分成塊),否則通過調用帶有字元串的 self.handle_entityref 或 self.handle_charref 來傳遞它們以分別包含命名或數字引用作為參數。如果 convert_charrefs 為 True (默認值),則所有字元引用( script / style 元素中的除外)都會自動轉換為相應的 Unicode 字元。

一個 HTMLParser 類的實例用來接受 HTML 數據,並在標記開始、標記結束、文本、注釋和其他元素標記出現的時候調用對應的方法。要實現具體的行為,請使用 HTMLParser 的子類並重載其方法。

這個解析器不檢查結束標記是否與開始標記匹配,也不會因外層元素完畢而隱式關閉了的元素引發結束標記處理。

下面是簡單的 HTML 解析器的一個基本示例,使用 HTMLParser 類,當遇到開始標記、結束標記以及數據的時候將內容列印出來。

輸出:

HTMLParser.reset() 重置實例。丟失所有未處理的數據。在實例化階段被隱式調用。

HTMLParser.feed(data) 填充一些文本到解析器中。如果包含完整的元素,則被處理;如果數據不完整,將被緩沖直到更多的數據被填充,或者 close() 被調用。 data 必須為 str 類型。

HTMLParser.close() 如同後面跟著一個文件結束標記一樣,強制處理所有緩沖數據。這個方法能被派生類重新定義,用於在輸入的末尾定義附加處理,但是重定義的版本應當始終調用基類 HTMLParser 的 close() 方法。

HTMLParser.getpos() 返回當前行號和偏移值。

HTMLParser.get_starttag_text() 返回最近打開的開始標記中的文本。結構化處理時通常應該不需要這個,但在處理「已部署」的 HTML 或是在以最小改變來重新生成輸入時可能會有用處(例如可以保留屬性間的空格等)。

下列方法將在遇到數據或者標記元素的時候被調用。他們需要在子類中重載。基類的實現中沒有任何實際操作(除了 handle_startendtag() ):

HTMLParser.handle_starttag 這個方法在標簽開始的時候被調用(例如: <div id="main"> )。 tag 參數是小寫的標簽名。 attrs 參數是一個 (name, value) 形式的列表,包含了所有在標記的 <> 括弧中找到的屬性。 name 轉換為小寫, value 的引號被去除,字元和實體引用都會被替換。比如,對於標簽 <a href="https://www.cwi.nl/"> ,這個方法將以下列形式被調用 handle_starttag('a', [('href', 'https://www.cwi.nl/')]) 。 html.entities 中的所有實體引用,會被替換為屬性值。

HTMLParser.handle_endtag(tag) 此方法被用來處理元素的結束標記(例如: </div> )。 tag 參數是小寫的標簽名。

HTMLParser.handle_startendtag(tag, attrs) 類似於 handle_starttag() , 只是在解析器遇到 XHTML 樣式的空標記時被調用( <tag ... /> )。這個方法能被需要這種特殊詞法信息的子類重載;默認實現僅簡單調用 handle_starttag() 和 handle_endtag() 。

HTMLParser.handle_data(data) 這個方法被用來處理任意數據(例如:文本節點和 <script>...</script> 以及 <style>...</style> 中的內容)。

HTMLParser.handle_entityref(name) 這個方法被用於處理 &name; 形式的命名字元引用(例如 > ),其中 name 是通用的實體引用(例如: 'gt' )。如果 convert_charrefs 為 True,該方法永遠不會被調用。

HTMLParser.handle_charref(name) 這個方法被用來處理 &#NNN; 和 &#xNNN; 形式的十進制和十六進制字元引用。例如, > 等效的十進制形式為 > ,而十六進制形式為 > ;在這種情況下,方法將收到 '62' 或 'x3E' 。如果 convert_charrefs 為 True ,則該方法永遠不會被調用。

HTMLParser.handle_comment(data) 這個方法在遇到注釋的時候被調用(例如: )。例如, 這個注釋會用 ' comment ' 作為參數調用此方法。

Internet Explorer 條件注釋(condcoms)的內容也被發送到這個方法,因此,對於 ``,這個方法將接收到 '[if IE 9]>IE9-specific content<![endif]' 。

HTMLParser.handle_decl(decl) 這個方法用來處理 HTML doctype 申明(例如 <!DOCTYPE html> )。 decl 形參為 <!...> 標記中的所有內容(例如: 'DOCTYPE html' )。

HTMLParser.handle_pi(data) 此方法在遇到處理指令的時候被調用。 data 形參將包含整個處理指令。例如,對於處理指令 <?proc color='red'> ,這個方法將以 handle_pi("proc color='red'") 形式被調用。它旨在被派生類重載;基類實現中無任何實際操作。

註解: HTMLParser 類使用 SGML 語法規則處理指令。使用 '?' 結尾的 XHTML 處理指令將導致 '?' 包含在 data 中。

HTMLParser.unknown_decl(data) 當解析器讀到無法識別的聲明時,此方法被調用。 data 形參為 <![...]> 標記中的所有內容。某些時候對派生類的重載很有用。基類實現中無任何實際操作。

因此,我們可以如此定義:

下面介紹如何解析 HTML 文檔。

解析一個文檔類型聲明:

解析一個具有一些屬性和標題的元素:

script 和 style 元素中的內容原樣返回,無需進一步解析:

解析注釋:

解析命名或數字形式的字元引用,並把他們轉換到正確的字元(注意:這 3 種轉義都是 '>' ):

填充不完整的塊給 feed() 執行, handle_data() 可能會多次調用(除非 convert_charrefs 被設置為 True ):

解析無效的 HTML (例如:未引用的屬性)也能正常運行:

㈥ python怎麼判斷windows下的某一個窗口是否當前正在操作的

獲取這個指定窗口的HANDLE,再根據這個HANDLE得到窗口的狀態,大概就這個思路。Python沒用過,其它語言倒是處理過,正常獲取到某個程序主窗體沒問題

㈦ Python win32 使用方式

handle = win32gui.FindWindow('Galaxy2DEngine',None)

left, top, right, bottom = win32gui.GetWindowRect(handle)

win32gui.MoveWindow(handle, int x, int y, int w,int h,BOOL bRepaint )

pos = win32gui.GetCursorPos()

win32api.SetCursorPos([x, y])

title = win32gui.GetWindowText(handle)
clsname = win32gui.GetClassName(handle)

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)

def click_it(self,x,y):
#設置滑鼠位置
win32api.SetCursorPos([x, y])
#獲取滑鼠位置
pos = win32api.GetCursorPos()
#通過滑鼠位置獲取窗體句柄
handle= win32gui.WindowFromPoint(pos)
#通過窗體名稱獲取窗體句柄(可通過spy++獲取)
#handle = win32gui.FindWindow('Galaxy2DEngine',None)
#獲取Title & ClassName
title = win32gui.GetWindowText(handle)
clsname = win32gui.GetClassName(handle)
#把在屏幕上滑鼠的位置轉換為打開的程序的客戶區的坐標
client_pos =win32gui.ScreenToClient(handle,pos)
tmp=win32api.MAKELONG(client_pos[0],client_pos[1])
#發送激活窗口消息 並發送滑鼠按下-抬起消息,依賴具體的窗體(handle),窗體內位置(tmp)
win32gui.SendMessage(handle, win32con.WM_ACTIVATE,win32con.WA_ACTIVE,0)
win32gui.SendMessage(handle, win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,tmp)
win32gui.SendMessage(handle, win32con.WM_LBUTTONUP,win32con.MK_LBUTTON,tmp)
#win32gui.SendMessage(handle, win32con.WM_RBUTTONDOWN,win32con.MK_LBUTTON,tmp)
#win32gui.SendMessage(handle, win32con.WM_RBUTTONUP,win32con.MK_LBUTTON,tmp)

熱點內容
安卓怎麼看蘋果手機的行駛軌跡 發布:2025-02-11 09:26:19 瀏覽:884
h板電影種子ftp 發布:2025-02-11 09:06:10 瀏覽:738
c語言數據類型定義 發布:2025-02-11 09:00:38 瀏覽:237
一個小時如何選擇伺服器 發布:2025-02-11 08:58:14 瀏覽:442
網易我的世界伺服器推薦國服 發布:2025-02-11 08:56:34 瀏覽:241
電視父母鎖屏密碼應該會是什麼 發布:2025-02-11 08:36:42 瀏覽:892
梅花適合用哪些植物進行配置 發布:2025-02-11 08:30:54 瀏覽:252
安卓手機如何像蘋果一樣彈窗 發布:2025-02-11 08:26:33 瀏覽:912
壓縮文件掃碼 發布:2025-02-11 08:20:55 瀏覽:258
小米5安卓70怎麼分屏 發布:2025-02-11 08:00:58 瀏覽:140