模塊,用一砣代碼實現了某個功能的代碼集合。 python
相似於函數式編程和麪向過程編程,函數式編程則完成一個功能,其餘代碼用來調用便可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能須要多個函數才能完成(函數又能夠在不一樣的.py文件中),n個 .py 文件組成的代碼集合就稱爲模塊。程序員
如:os 是系統相關的模塊;file是文件操做相關的模塊shell
模塊分爲三種:macos
自定義模塊編程
第三方模塊bash
內置模塊app
一、定義模塊python2.7
情景一:ide
情景二:函數式編程
情景三:
二、導入模塊
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
二、導入模塊
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自帶的功能,在使用內置模塊相應的功能時,須要【先導入】再【使用】
用於提供對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)
用於提供系統級別的操做:
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所指向的文件或者目錄的最後修改時間
|