6.python模塊(導入,內置,自定義,開源)

来源:http://www.cnblogs.com/liu-yao/archive/2016/02/11/5186322.html
-Advertisement-
Play Games

一、模塊 1.模塊簡介 模塊是一個包含所有你定義的函數和變數的文件,其尾碼名是.py。模塊可以被別的程式引入,以使用該模塊中的函數等功能。這也是使用python標準庫的方法。 類似於函數式編程和麵向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個


一、模塊

1.模塊簡介

模塊是一個包含所有你定義的函數和變數的文件,其尾碼名是.py。模塊可以被別的程式引入,以使用該模塊中的函數等功能。這也是使用python標準庫的方法。

類似於函數式編程和麵向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱為模塊。

2.模塊的引入

在Python中用關鍵字import來引入某個模塊,比如要引用模塊math,就可以在文件最開始的地方用import math來引入。在調用math模塊中的函數時,必須這樣引用:

1 2 3 4 模塊名.函數名 例: import math import sys

 

有時候我們只需要用到模塊中的某個函數,只需要引入該函數即可,此時可以通過語句

 from 模塊名 import 函數名1,函數名2....

例:

1 2 3 4 5 6 7 import module #從某個模塊導入某個功能 from module.xx.xx import xx #從某個模塊導入某個功能,並且給他個別名 from module.xx.xx import xx as rename  #從某個模塊導入所有 from module.xx.xx import *

模塊分為三種:

  • 自定義模塊

  • 內置模塊

  • 開源模塊

3.模塊的安裝

(1)yum install 模塊名

(2)apt-get

(3)pip安裝 參考使用(點擊

(4)源碼安裝

1 2 3 4 5 6 需要編譯環境:yum install python-devel gcc 下載源碼包:wget http://xxxxxxxxxxx.tar 解壓:tar -xvf xxx.tar 進入:cd xxx 編譯:python setup.py build 安裝:python setup.py install

二、自定義模塊

1.在Python中,每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字。

例:

寫一個模塊(模塊文件要和代碼文件在同一目錄下)

1 2 3 4 5 6 7 8 9 10 #vim moudle_test.py #寫入如下代碼 #!/usr/bin/env python3 print ('自定義 moudle') #調用 #vim test.py #!/usr/bin/env python3 #導入自定義模塊 import moudle_test #執行test.py

2.模塊文件為單獨文件夾 ,文件夾和代碼在同一目錄下

__init__


 

導入模塊其實就是告訴Python解釋器去解釋那個py文件

  • 導入一個py文件,解釋器解釋該py文件

  • 導入一個包,解釋器解釋該包下的 __init__.py 文件

3.sys.path添加目錄

如果sys.path路徑列表沒有你想要的路徑,可以通過 sys.path.append('路徑') 添加。
通過os模塊可以獲取各種目錄,例如:

 

三、內置模塊

1.os模塊 提供系統級別的操作

os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑
1 2 3 >>> os.getcwd() '/root' >>>

 


os.chdir("目錄名")  改變當前腳本工作目錄;相當於linux下cd命令
1 2 3 4 >>> os.chdir('/usr/local') >>> os.getcwd() '/usr/local' >>>


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

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

os.makedirs('目錄1/目錄2') 可生成多層遞歸目錄(相當於linux下mkdir -p)
1 2 >>> os.makedirs('/python/moudle/') # ll /python/moudle/

os.removedirs('目錄') 若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推
1 2 3 >>> os.removedirs('/python/moudle') #a目錄中除了有一個b目錄外,再沒有其它的目錄和文件。 #b目錄中必須是一個空目錄。 如果想實現類似rm -rf的功能可以使用shutil模塊

os.mkdir('目錄')  生成單級目錄;相當於shell中mkdir 目錄
1 >>> os.mkdir('/python')

os.rmdir('目錄')  刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir
1 2 3 4 5 >>> os.rmdir('/python') >>> os.rmdir('/python') Traceback (most recent call last):   File "<stdin>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: '/python'

os.listdir('目錄') 列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式列印
1 2 >>> os.listdir('/root') ['.Xauthority', '[email protected]', '.py.swp', '.ssh', 'in.sh', '1', 'IPy-0.81.tar.gz', 'Dockerssh', 'id_rsa.pub', 'psutil-2.0.0.tar.gz', '.python_history', '.bashrc', 'ansible', '.bash_history', '.vim', 'IPy-0.81', '.pip', '.profile', '.ansible', 'python', '.dockercfg', 'Docker', 'util-linux-2.27', '.viminfo', 'util-linux-2.27.tar.gz', 'ubuntu_14.04.tar', '__pycache__', 'psutil-2.0.0', 'xx.py', 'ip.py', 'DockerNginx', '.cache', 'dict_shop.py']
os.remove()刪除一個文件
1 >>> os.remove('/root/xx.py')

os.rename("原名","新名")  重命名文件/目錄
1 2 3 4 5 >>> os.listdir('/python') ['oldtouch'] >>> os.rename('oldtouch','newtouch') >>> os.listdir('/python') ['newtouch']

os.stat('path/filename')  獲取文件/目錄信息
1 2 >>> os.stat('newtouch') os.stat_result(st_mode=33188, st_ino=1048593, st_dev=51713, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1453442450, st_mtime=1453442450, st_ctime=1453442500)

os.sep      輸出操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"
1 2 3 >>> os.sep '/' >>>

os.linesep 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"
1 2 >>> os.linesep '\n'

os.pathsep    輸出用於分割文件路徑的字元串
1 2 >>> os.pathsep ':'

os.name    輸出字元串指示當前使用平臺。win->'nt'; Linux->'posix'
1 2 >>> os.name 'posix'

os.system("pwd")  運行shell命令,直接顯示
1 2 3 >>> os.system('pwd') /python 0

os.environ

1 2 >>> os.environ environ({'_': '/usr/bin/python3', 'SSH_CONNECTION': 省略n個字元

os模塊其他語法:

 

1 2 3 4 5 6 7 8 9 10 11 12 os.path模塊主要用於文件的屬性獲取, 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所指向的文件或者目錄的最後修改時間

 


 

2、sys模塊 用於提供對解釋器相關的操作

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 sys.argv   命令行參數List,第一個元素是程式本身路徑 sys.modules 返回系統導入的模塊欄位,key是模塊名,value是模塊 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] sys.modules.keys() 返回所有已經導入的模塊名 sys.modules.values() 返回所有已經導入的模塊 sys.exc_info()     獲取當前正在處理的異常類,exc_type、exc_value、exc_traceback當前處理的異常詳細信息 sys.exit(n)        退出程式,正常退出時exit(0) sys.hexversion     獲取Python解釋程式的版本值,16進位格式如:0x020403F0 sys.version        獲取Python解釋程式的 sys.api_version    解釋器的C的API版本 sys.version_info ‘final’表示最終,也有’candidate’表示候選,serial表示版本級別,是否有後繼的發行 sys.displayhook(value)      如果value非空,這個函數會把他輸出到sys.stdout,並且將他保存進__builtin__._.指在python的互動式解釋器里,’_’ 代表上次你輸入得到的結果,hook是鉤子的意思,將上次的結果鉤過來 sys.getdefaultencoding()    返回當前你所用的預設的字元編碼格式 sys.getfilesystemencoding() 返回將Unicode文件名轉換成系統文件名的編碼的名字 sys.setdefaultencoding(name)用來設置當前預設的字元編碼,如果name和任何一個可用的編碼都不匹配,拋出 LookupError,這個函數只會被site模塊的sitecustomize使用,一旦別site模塊使用了,他會從sys模塊移除 sys.builtin_module_names    Python解釋器導入的模塊列表 sys.executable              Python解釋程式路徑 sys.getwindowsversion()     獲取Windows的版本 sys.copyright      記錄python版權相關的東西 sys.byteorder      本地位元組規則的指示器,big-endian平臺的值是’big’,little-endian平臺的值是’little’ sys.exc_clear()    用來清除當前線程所出現的當前的或最近的錯誤信息 sys.exec_prefix    返回平臺獨立的python文件安裝的位置 sys.stderr         錯誤輸出 sys.stdin          標準輸入 sys.stdout         標準輸出 sys.platform       返回操作系統平臺名稱 sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變數的值 sys.maxunicode     最大的Unicode值 sys.maxint         最大的Int值 sys.version        獲取Python解釋程式的版本信息 sys.hexversion     獲取Python解釋程式的版本值,16進位格式如:0x020403F0

3.hashlib模塊 

Python的hashlib提供了常見的摘要演算法,如MD5,SHA1等等。

什麼是摘要演算法呢?摘要演算法又稱哈希演算法、散列演算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進位的字元串表示)用於加密相關的操作,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 演算法

1)MD5演算法

1 2 3 4 5 >>> import hashlib >>> hash = hashlib.md5() >>> hash.update('liuyao199539'.encode('utf-8')) >>> hash.hexdigest() '69ce9b5f54ba01b6d31256596e3fbb5c'

1.首先從python直接導入hashlib模塊

2.調用hashlib里的md5()生成一個md5 hash對象

3.生成hash對象後,就可以用update方法對字元串進行md5加密的更新處理

4.繼續調用update方法會在前面加密的基礎上更新加密

5.在3.x幾的版本上update裡面需要加.encode('utf-8'),而2.x的版本不需要

2)sha1演算法

1 2 3 4 5 >>> import hashlib >>> sha_1 = hashlib.sha1() >>> sha_1.update('liuyao'.encode('utf-8')) >>> sha_1.hexdigest() 'dd34a806b733f6d02244f39bcc1af87819fcaa82'

3)sha256演算法

 

1 2 3 4 5 >>> import hashlib >>> sha_256 = hashlib.sha256() >>> sha_256.update('liuyao'.encode('utf-8')) >>> sha_256.hexdigest() '5ad988b8fa43131f33f4bb867207eac4a1fcf56ff529110e2d93f2cc7cfab038'

4)sha384演算法

 

1 2 3 4 5 >>> import hashlib >>> sha_384 = hashlib.sha384() >>> sha_384.update('liuyao'.encode('utf-8')) >>> sha_384.hexdigest() '03ca6dcd5f83276b96020f3227d8ebce4eebb85de716f37b38bd9ca3922520efc67db8efa34eba09bd01752b0313dba3'

5)sha512演算法

 

1 2
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • C++Primer第5版學習筆記(三) 第四/五章的重難點內容 你可以點擊這裡回顧第三章內容 因為第五章的內容比較少,因此和第四章的筆記內容合併。 第四章是和表達式有關的知識,表達式是C++的基礎設施,本章由三部分組成: 1.表達式概念基礎,包括表達式的基本概念,左值和右值的概念,優先順序結合律,求值
  • 其實不是真的創建了批量任務,而是用python創建一個文本文件,每行一個要下載的鏈接,然後打開迅雷,複製文本文件的內容,迅雷監測到剪切板變化,彈出下載全部鏈接的對話框~~ 實際情況是這樣的,因為用python分析網頁非常,比如下載某頁中的全部pdf鏈接 1 from __future__ impor
  • C-Free和VC++ 6.0是根據源文件擴展名來編譯的。在學習C語言時,應將IDE的預設擴展名設置為.c,或者先保存為.c文件再進行編譯,以避免造成不必要的困惑。
  • 官網地址 本文內容 簡介 Futures 阻塞 異常 Promises 工具 最近看了《七周七語言:理解多種編程泛型》,介紹了七種語言(四種編程泛型)的主要特性:基本語法,集合,並行/併發,其中就有 Scala。你不能指望這種書全面介紹,因為其中任何一門語言都夠寫一本書了~ 我比較關註並行/併發,但
  • 1 /* 2 類是屬於用戶自定義的數據類型, 3 並且該類型的數據具有一定的行為能力, 4 也就是類中說描述的方法。 5 通常來說, 6 一個類的定義包含兩部分的內容, 7 一是該類的屬性, 8 另一部分是它所擁有的方法。 9 以 "人類" 這個類來說, 10 每個人都有自己的姓名、年齡、出生日期、
  • 本文實例講述了PHP實現上傳文件並存進資料庫的方法。分享給大家供大家參考。具體如下: show_add.php文件如下: <?php if(!isset($_REQUEST[''id'']) or $_REQUEST[''id'']=="") die("error: id none"); $id =
  • PageControl位於Win32選項卡中,可以在控制項上右鍵點擊“New Page”,來實現靜態的頁面添加。 先說說幾個重要的屬性: ActivePage:當前活動的頁面(在設計模式中切換頁面會更改ActivePage屬性) MultiLine:選項卡以多行形式顯示。 Style:頁面樣式。 ts
  • 同事演示了一個.NET的的PNG異形視窗.挺漂亮.於是也想用Delphi顯擺一個. 關於Delphi用PNG做異形視窗的資料有不少.都是用GDIPlus或者TPNGImage組件載入PNG圖像做的. 好在Delphi包裝了微軟的IWICImagingFactory介面,這樣處理PNG的工作就交給操作
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...