Python簡單原始碼解析

2022-03-13 22:23:09 字數 3330 閱讀 9171

批量修改檔案型別

def batch_rename(work_dir, old_ext, new_ext):

for filename in os.listdir(work_dir):

file_ext = os.path.splitext(filename)[1]

if file_ext == old_ext:

newfile = filename.replace(old_ext,new_ext)

os.rename(os.path.join(work_dir,file_ext ),os.path.join(work_dir,new_ext))

os.listdir():列出當前目錄下的所有檔案,為檔案的名稱,而不是包含路徑的名稱,同樣不包含子目錄內的檔案;

os.path.splitext():分割檔案,分為檔名和檔案型別。檔案型別為最後乙個.和字尾名,檔名稱為最後乙個.前的所有內容。

replace():字串替換

os.path.join():用組合的方式將檔案路徑和檔名稱組合為絕對路徑。不同的系統新增的內容不一樣。和join一樣,但功能特殊化。

os.rename():修改檔名。

def new_folder(work_dir,folder_name):

if not os.path.exists(os.path.join(work_dir,folder_name)):

os.makedirs(os.path.join(work_dir,folder_name))

def new_folder(folder_name):

if not os.path.exists(folder_name)):

os.makedirs(folder_name)

os.path.exists():判斷資料夾是否存在

os.makedirs():新建資料夾

import os

import stat

import time

def get_fileinfo(filename):

file_stats = os.stat(filename)

file_info =

return file_info;

if __name__ == "__main__":

filename = input("please input you file:")

fileinfo = get_fileinfo(filename)

print(fileinfo)

if stat.s_isdir(fileinfo["fmode"]):

print("folder")

else:

print("filename :%(fname)s" % fileinfo)

os.stat():獲取檔案的系統狀態資訊,返回乙個系統狀態資訊的元組。

stat模組

time.localtime():格式化時間,輸入為sec(秒)

針對字典的格式化輸出,有兩種方式:

a. print("%(fname)s" % file_info)

b. print("%s" % file_info["fname"])

time.strftime():將當前時間格式化為字串。

stat.s_isdir():判斷是否為目錄,同樣還有其他的檔案型別。

def folder_size(folder_name):

fold_size = 0

for (path,dirs,files) in os.walk(folder_name):

for file in files:

filename = os.path.join(path,file)

fold_size += os.path.getsize(filename)

return fold_size

os.walk():遍歷資料夾,其中遍歷為廣度優先遍歷。即,先遍歷當前的資料夾,一步一步深入遍歷,同時,根據引數不同遍歷的方式也不同。

a. path為當前的路徑。

b. dirs為當前路徑是否包含子目錄,沒有為

c. files為當前路徑的檔案列表。

os.path.getsize():獲取檔案大小。

import os

from time import strftime

def zip_files(filedir,fileend,zip_prog):

for files in os.listdir(filedir):

if files.endswith(fileend):

files1 = files + "." + strftime("%y-%m-%d") + ".zip"

os.chdir(filedir)

os.popen(zip_prog + " " + files1 + " " + files)

#zip_prog = "zip.exe"

zip.exe:壓縮程式

os.popen():呼叫exe,其中的引數和cmd引數一樣,需要用空格區分,並且程式執行的目錄頁需要切換正確,不然會導致程式假執行的狀態。

os.chdir():切換工作目錄

files.endswith():判斷字尾方法。

from time import strftime:匯入某個某塊的某一部分,避免全部匯入。

os.system()和os.popen()雖然效果一樣,但兩者存在區別。明顯的一點是,os.system和os.popen的返回結果已經執行效果並不相同。

import subprocess

file_test = input("file in:")

file_out = input("file out:")

fileout = open(file_out ,"w");

for server in open(file_test ):

subprocess.popen(("nslookup" + " " + server ),stdout = fileout )

fileout.close()

詳情參考subprocess.popen()中的引數設定。

nslookup命令引數,詳情可nslookup /?(windows)

stdout標準輸出,將執行結果寫入到file_out檔案中。

寫檔案最後記得關閉檔案。

python原始碼解析

demo資料夾裡放的是一些例子 doc資料夾裡放的是文件,grammer是語法分析器,include是python所包含的一些標頭檔案,lib是python的庫,都是用python語言寫的,moduels是用c寫的python模組,parser是分詞器。是最生動的文字,現在我來附上我所理解的pyth...

dubbo原始碼解析 簡單原理

dubbo原始碼解析 簡單原理 與spring融合 dubbo是乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及soa服務治理方案 面向服務的體系架構 soa service oriented architecture 各服務是部署在不同的伺服器上,那服務間的呼叫就是要通過...

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...