Python模塊(導入,內置,自定義,開源)

目錄:

  • 模塊介紹python

  • 自定義模塊linux

  • 內置模塊docker

  • 開源模塊shell

1、模塊

1.模塊簡介編程

模塊是一個包含全部你定義的函數和變量的文件,其後綴名是.py。模塊能夠被別的程序引入,以使用該模塊中的函數等功能。這也是使用python標準庫的方法。ubuntu

相似於函數式編程和麪向過程編程,函數式編程則完成一個功能,其餘代碼用來調用便可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能須要多個函數才能完成(函數又能夠在不一樣的.py文件中),n個 .py 文件組成的代碼集合就稱爲模塊。vim

2.模塊的引入windows

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

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

 

有時候咱們只須要用到模塊中的某個函數,只須要引入該函數便可,此時能夠經過語句bash

 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安裝 參考使用(點擊

pip3 install paramiko #paramiko 是模塊名

  

(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

2、自定義模塊

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模塊能夠獲取各類目錄,例如:

 

3、內置模塊

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' , 'yaoyao@192.168.42.51' , '.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所指向的文件或者目錄的最後修改時間
 

 


 

二、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

 

4、開源模塊安裝、使用

 

https://pypi.python.org/pypi 是python的開源模塊庫,幾乎涵蓋了你想用python作的任何事情。 事實上每一個python開發者,只要註冊一個帳號就能夠往這個平臺上傳你本身的模塊,這樣全世界的開發者均可以容易的下載並使用你的模塊。

 

那如何從這個平臺上下載代碼呢?

 

1.直接在上面這個頁面上點download,下載後,解壓並進入目錄,執行如下命令完成安裝

 

編譯源碼    python setup.py build
安裝源碼    python setup.py install

 

2.直接經過pip安裝

 

pip3 install paramiko #paramiko 是模塊名

 

pip命令會自動下載模塊包並完成安裝。

 

pip命令默認會鏈接在國外的python官方服務器下載,速度比較慢,你還可使用國內的豆瓣源,數據會按期同步國外官網,速度快好多

 

sudo pip install -i http://pypi.douban.com/simple/ paramiko --trusted-host pypi.douban.com   # paramiko 是模塊名

 

下載後,直接導入使用就能夠,跟自帶的模塊調用方法無差,演示一個鏈接linux執行命令的模塊

 

複製代碼
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("192.168.224.101", 22, "root", "   ")

stdin, stdout, stderr = ssh.exec_command("df")
print(stdout.read().decode("utf-8"))
ssh.close()
複製代碼

 

輸出:

 

複製代碼
文件系統               1K-塊    已用     可用 已用% 掛載點
/dev/mapper/cl-root 17811456 7775084 10036372   44% /
devtmpfs              488272       0   488272    0% /dev
tmpfs                 499300       0   499300    0% /dev/shm
tmpfs                 499300   19344   479956    4% /run
tmpfs                 499300       0   499300    0% /sys/fs/cgroup
/dev/sda1            1038336  171112   867224   17% /boot
tmpfs                  99864       0    99864    0% /run/user/0

 

複製代碼
#coding:utf-8

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.108', 22, 'alex', '123')

stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
ssh.close();

執行命令 - 經過用戶名和密碼鏈接服務器
複製代碼
相關文章
相關標籤/搜索