乙個完整的python程式

2022-09-13 14:36:09 字數 2492 閱讀 7341

這部分主要是通過一些較大型的指令碼來結束對python系統介面的學習,可以了解到python物件導向程式設計和**復用等開發模式的支援。

任務實現邏輯:

(1)獲取輸入引數

(2)使用glob模組掃瞄目錄下的檔案

(3)獲取檔案的大小,並放入列表中

(4)大小排序,輸出目標值

在指定目錄樹範圍內找到最大的檔案

如果目標是多個目錄巢狀而成,需要掃瞄目錄樹,可以使用os.walk()函式。

可能出現的異常處理情況

(1)統一路徑表示的差異情況,windows採用反斜槓。

(2)統一目錄名稱小大寫的情況,windows不注重大小寫的差異。

(3)跳過檔案操作的異常,譬如獲取檔案的大小的呼叫錯誤等。

(4)二進位制模式開啟檔案避免編譯碼錯誤。

掃瞄整台機器

(1)繞過不能解碼的檔案或目錄名

(2)使用檔案生成器和迭代器處理檔案,避免記憶體使用問題和阻塞問題(逐行讀取)。

列印unicode檔名

(1)使用os.listdir()可以以兩種不同方式返回檔案,傳入str時得到的是解碼之後的str字串,而傳入bytes則是靜態編碼的位元組字串。

(2)在os.walk(b'xx')函式中傳入位元組字串即可。

(3)由於檔名的解碼錯誤出現在列印階段,所以可以通過傳入編碼方法解決解碼產生的錯誤,如print(dir.encode())。

(4)還可以將指令碼的輸出重定向到指令碼,可避免該問題,因為這就不涉及到字元解碼的問題了,python程式處理中只存在位元組狀態。

分割任務實現邏輯:

(1)處理出入引數的問題,因為該操作涉及的輸入和輸出內容比較多。

(2)檔案切割操作,按照位元組數讀取,避免文字模式下讀寫產生的檔案資料損壞,尤其是二進位制檔案。

(3)檔案的開啟和關閉操作,需嚴謹的處理,盡可能手動關閉。

合併任務實現邏輯:

(1)獲取輸入條件,需要合併的目錄和檔案。

(2)檔案讀取時,採用指定檔案塊大小讀取,類似於流式讀取比較高效。

(3)檔名排序的問題,依賴於設計時檔名的設定。

任務實現邏輯:

(1)使用os.listdir遍歷站點目錄下的所有檔名。

(2)使用字串物件replace方法來執行全域性搜尋和替換操作。

(3)將替換完的文字內容寫入預設好的檔案中。

執行邏輯:

(1)收集指定測試指令碼目錄,遍歷目錄獲取檔案列表。

(2)從input和args子目錄獲取指令碼輸入和命令列引數。

(3)在output子目錄中為所有正常退出的測試生成最初的stdout輸出檔案。

(4)通過退出狀態**或stderr中的錯誤訊息報告測試結果。

python自帶的兩個測試框架doctest,unittest。

任務實現邏輯:

(1)編寫檔案內容拷貝函式,使用二進位制讀寫。

(2)編寫檔案資訊收集(路徑)函式,以及目標目錄樹的構建。

(3)輸入資訊檢查和校驗。

任務實現邏輯:

(1)輸入引數收集和處理

(2)收集比較的兩個目錄中的檔案列表。

(3)根據上一步驟的輸出結果進行比較。

比較目錄樹中檔案內容的差異性,需要新增以下邏輯:

(1)相同檔名的話先校驗下內容的一致性,譬如md5值比較。

(2)檔案讀取逐個字元的進行比較。

實現類似grep、find、glob命令的功能

實現邏輯:

(1)使用os.walk函式遍歷目錄。

(2)使用字串模式匹配遍歷結果。

在頻繁的使用編碼目錄的各種形式之後,我們需要將這些需求進行歸類和整理:

(1)冗餘性,通過把共有的細節部分封裝起來重複使用以簡化遍歷操作。

(2)可擴充套件性,考慮指令碼的可擴充套件使用能力,提供可複製,更通用,可定製和復用的辦法。

(3)封裝性,將程式與其實現的細節盡量隔離開,即使os.walk就隔離了內部遍歷的過程,但這個介面還是容易隨時間而改變。

使用oop程式設計技巧切入目錄樹搜尋操作

(1)編寫filevisitor類,包含run方法執行主要執行邏輯,呼叫各種抽象的方法來描述業務處理流程。

(2)編寫繼承於filevisitor類,定製更加細節的邏輯部分實現擴充套件功能。

實現邏輯:webbrowser模組

根據指定的url啟動網頁瀏覽器

mimetypes模組

根據檔案的名稱來識別檔案的型別

Python 乙個簡單的完整程式

test.py內容 usr bin env python coding utf 8 from math import sqrt import math as mth for n in range 10 0,2 print n,else print done.x mth.pow 2,4 y sqrt ...

完整的寫乙個Python小程式

def collatz number if number 2 0 print number 2 return number 2 elif number 2 1 print 3 str number 1 return 3 number 1 collatz猜想也叫3n 1猜想,給乙個正整數,如果是偶數,...

python寫乙個完整的小程式 自己寫的乙個小程式

該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓 自己寫了乙個python 簿,import sys import android import types import time import re droid android.android address def show result dialo...