Python學習筆記 模組

2021-07-10 14:09:36 字數 4319 閱讀 1872

模組,用一砣**實現了某個功能的**集合。

類似於函式式程式設計和面向過程程式設計,函式式程式設計則完成乙個功能,其他**用來呼叫即可,提供了**的重用性和**間的耦合。而對於乙個複雜的功能來,可能需要多個函式才能完成(函式又可以在不同的.py檔案中),n個 .py 檔案組成的**集合就稱為模組。

如:os 是系統相關的模組;file是檔案操作相關的模組

模組分為三種:

自定義模組

內建模組

開源模組

import module

from module.xx.xx

import

xxfrom module.xx.xx

import

xxas

rename

from module.xx.xx

import *

匯入模組其實就是告訴python直譯器去解釋那個py檔案

匯入乙個py檔案,直譯器解釋該py檔案

匯入乙個包,直譯器解釋該包下的init.py 檔案

那麼問題來了,匯入模組時是根據那個路徑作為基準來進行的呢?

即:sys.path

import sys

print sys.path

結果:['', '/usr/lib/python2.6/site-packages/setuptools-19.6.2-py2.6.egg', '/usr/lib/python2.6/site-packages/gearman-2.0.2-py2.6.egg', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib64/python2.6/site-packages/gtk-2.0', '/usr/lib/python2.6/site-packages']

import sys

import os

pre_path = os.path.abspath('../')

os用於提供系統級別的操作

os.getcwd() 獲取當前工作目錄,即當前python指令碼工作的目錄路徑

os.chdir("dirname") 改變當前指令碼工作目錄;相當於shell下cd

os.curdir 返回當前目錄: ('.')

os.pardir 獲取當前目錄的父目錄字串名:('..')

os.makedirs('dirname1/dirname2') 可生成多層遞迴目錄

os.removedirs('dirname1') 若目錄為空,則刪除,並遞迴到上一級目錄,如若也為空,則刪除,依此類推

os.mkdir('dirname') 生成單級目錄;相當於shell中mkdir dirname

os.rmdir('dirname') 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname

os.listdir('dirname') 列出指定目錄下的所有檔案和子目錄,包括隱藏檔案,並以列表方式列印

os.remove() 刪除乙個檔案

os.rename("oldname","newname") 重新命名檔案/目錄

os.stat('path/filename') 獲取檔案/目錄資訊

os.sep 輸出作業系統特定的路徑分隔符,win下為"\\",linux下為"/"

os.linesep 輸出當前平台使用的行終止符,win下為"\t\n",linux下為"\n"

os.pathsep 輸出用於分割檔案路徑的字串

os.name 輸出字串指示當前使用平台。win->'nt'; linux->'posix'

os.system("bash command") 執行shell命令,直接顯示

os.environ 獲取系統環境變數

os.path.abspath(path) 返回path規範化的絕對路徑

os.path.split(path) 將path分割成目錄和檔名二元組返回

os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第乙個元素

os.path.basename(path) 返回path最後的檔名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

os.path.exists(path) 如果path存在,返回true;如果path不存在,返回false

os.path.isabs(path) 如果path是絕對路徑,返回true

os.path.isfile(path) 如果path是乙個存在的檔案,返回true。否則返回false

os.path.isdir(path) 如果path是乙個存在的目錄,則返回true。否則返回false

os.path.join(path1[, path2[, ...]]) 將多個路徑組合後返回,第乙個絕對路徑之前的引數將被忽略

os.path.getatime(path) 返回path所指向的檔案或者目錄的最後訪問時間

os.path.getmtime(path) 返回path所指向的檔案或者目錄的最後修改時間

sys用於提供對直譯器相關的操作

sys.argv           命令列引數list,第乙個元素是程式本身路徑

sys.exit(n) 退出程式,正常退出時exit(0)

sys.version 獲取python解釋程式的版本資訊

sys.maxint 最大的int值

sys.path 返回模組的搜尋路徑,初始化時使用pythonpath環境變數的值

sys.platform 返回作業系統平台名稱

sys.stdout.write('please:')

val = sys.stdin.readline()[:-1]

hashlib 用於加密相關的操作,代替了md5模組和sha模組,主要提供 sha1, sha224, sha256, sha384, sha512 ,md5 演算法

import hashlib

# ######## md5 ########

hash = hashlib.md5()

hash.update('admin')

print hash.hexdigest()

# ######## sha1 ########

hash = hashlib.sha1()

hash.update('admin')

print hash.hexdigest()

# ######## sha256 ########

hash = hashlib.sha256()

hash.update('admin')

print hash.hexdigest()

# ######## sha384 ########

hash = hashlib.sha384()

hash.update('admin')

print hash.hexdigest()

# ######## sha512 ########

hash = hashlib.sha512()

hash.update('admin')

print hash.hexdigest()

以上加密演算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密演算法中新增自定義key再來做加密。

import hashlib

# ######## md5 ########

hash = hashlib.md5('898oafs09f')

hash.update('admin')

print hash.hexdigest()

python 還有乙個 hmac 模組,它內部對我們建立 key 和 內容 再進行處理然後再加密

import hmac

h = hmac.new('***')

h.update('hellowo')

print h.hexdigest()

python學習筆記 模組

pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存。通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。基本介面 pickle.dump obj,file,protocol 讀取方式開啟檔案...

Python學習筆記 模組

1.為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 module 為了避免模組名衝突,python又引入了按目錄來組織模組的方法,稱為包 package 每個包目錄下面...

Python學習筆記 模組

當 越來越多的時候,將 放入乙個py檔案難以維護,所以我們將 分拆放入多個py檔案,可以使不同py檔案中同一名字的變數或函式互不影響。我們可以把函式看成一塊積木,模組就是一盒主題積木,通過它可以拼出某一主題的東西。在python中,乙個py檔案就成為乙個模組,通常情況下,我們把實現某一特定功能的 放...