模塊,用一砣代碼實現了某個功能的代碼集合。
類似於函數式編程和麪向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱爲模塊。
如:os 是系統相關的模塊;file是文件操作相關的模塊
模塊分爲三種:
自定義模塊
第三方模塊
內置模塊
自定義模塊
1、定義模塊
情景一:
情景二:
情景三:
2、導入模塊
Python之所以應用越來越廣泛,在一定程度上也依賴於其爲程序員提供了大量的模塊以供使用,如果想要使用模塊,則需要導入。導入模塊有一下幾種方法:
1 2 3 4 | import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import * |
導入模塊其實就是告訴Python解釋器去解釋那個py文件
導入一個py文件,解釋器解釋該py文件
導入一個包,解釋器解釋該包下的 __init__.py 文件 【py2.7】
那麼問題來了,導入模塊時是根據那個路徑作爲基準來進行的呢?即:sys.path
2、導入模塊
Python之所以應用越來越廣泛,在一定程度上也依賴於其爲程序員提供了大量的模塊以供使用,如果想要使用模塊,則需要導入。導入模塊有一下幾種方法:
1 2 3 4 | import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import * |
導入模塊其實就是告訴Python解釋器去解釋那個py文件
導入一個py文件,解釋器解釋該py文件
導入一個包,解釋器解釋該包下的 __init__.py 文件 【py2.7】
那麼問題來了,導入模塊時是根據那個路徑作爲基準來進行的呢?即:sys.path
1 2 3 4 5 | import sys print sys.path 結果: [ '/Users/wupeiqi/PycharmProjects/calculator/p1/pp1' , '/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg' , '/usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg' , '/usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg' , '/usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg' , '/usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg' , '/usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg' , '/usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg' , '/Users/wupeiqi/PycharmProjects/calculator' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload' , '/usr/local/lib/python2.7/site-packages' , '/Library/Python/2.7/site-packages' ] |
如果sys.path路徑列表沒有你想要的路徑,可以通過 sys.path.append('路徑') 添加。
1 2 3 4 | import sys import os project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_path) |
模塊
內置模塊是Python自帶的功能,在使用內置模塊相應的功能時,需要【先導入】再【使用】
一、sys
用於提供對Python解釋器相關的操作:
1 2 3 4 5 6 7 8 9 | sys.argv 命令行參數 List ,第一個元素是程序本身路徑 sys.exit(n) 退出程序,正常退出時exit( 0 ) sys.version 獲取Python解釋程序的版本信息 sys.maxint 最大的 Int 值 sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 sys.platform 返回操作系統平臺名稱 sys.stdin 輸入相關 sys.stdout 輸出相關 sys.stderror 錯誤相關 |
import sysimport timedef view_bar(num, total): rate = float(num) / float(total) rate_num = int(rate * 100) r = '\r%d%%' % (rate_num, ) sys.stdout.write(r) sys.stdout.flush()if __name__ == '__main__': for i in range(0, 100): time.sleep(0.1) view_bar(i, 100)
二、os
用於提供系統級別的操作:
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 | os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑 os.chdir( "dirname" ) 改變當前腳本工作目錄;相當於shell下cd os.curdir 返回當前目錄: ( '.' ) os.pardir 獲取當前目錄的父目錄字符串名:( '..' ) os.makedirs( 'dir1/dir2' ) 可生成多層遞歸目錄 os.removedirs( 'dirname1' ) 若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推 os.mkdir( 'dirname' ) 生成單級目錄;相當於shell中mkdir dirname os.rmdir( 'dirname' ) 刪除單級空目錄,若目錄不爲空則無法刪除,報錯;相當於shell中rmdir dirname os.listdir( 'dirname' ) 列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式打印 os.remove() 刪除一個文件 os.rename( "oldname" , "new" ) 重命名文件 / 目錄 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所指向的文件或者目錄的最後修改時間 |