日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python之模块

發(fā)布時間:2024/1/17 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

模塊:是實現(xiàn)某一功能的代碼的集合,類似于一個函數(shù)。模塊在使用時直接導入即可。

導入模塊,其實就是告訴python解釋器去解釋這個導入的py文件。若導入的是一個包,則python解釋器去解釋該包里面的__init__.py文件。

模塊導入的時候,是以sys.path作為基準。

>>> import sys >>> print sys.path ['', '/usr/local/lib/python2.7/dist-packages/distribute-0.6.28-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.4b4-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/pandas-0.16.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/numpy-1.9.2-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/pytz-2015.4-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/python_dateutil-2.4.2-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client'] View Code

一、開源模塊

導入開源模塊時,需要現(xiàn)安裝該模塊包。

兩種安裝方式:

1、在線安裝:yum、pip、apt-get

2、編譯安裝:下載源碼包->解壓->編譯(python setup.py build)->安裝(python setup.py install)

確認安裝成功后,即可導入使用。

eg:

安裝:

# pycrypto,由于 paramiko 模塊內(nèi)部依賴pycrypto,所以先下載安裝pycrypto# 下載安裝 pycrypto wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz tar -xvf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py build python setup.py install# 進入python環(huán)境,導入Crypto檢查是否安裝成功# 下載安裝 paramiko wget http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz tar -xvf paramiko-1.10.1.tar.gz cd paramiko-1.10.1 python setup.py build python setup.py install# 進入python環(huán)境,導入paramiko檢查是否安裝成功 安裝paramiko模塊

?

使用:

#!/usr/bin/env python #coding:utf-8import paramikossh = 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(); 通過帳號連接服務器

?

二、內(nèi)置模塊

1、os模塊

主要用于系統(tǒng)管理的操作

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 輸出操作系統(tǒng)特定的路徑分隔符,win下為"\\",Linux下為"/" os.linesep 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n" os.pathsep 輸出用于分割文件路徑的字符串 os.name 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix' os.system("bash command") 運行shell命令,直接顯示 os.environ 獲取系統(tǒng)環(huán)境變量 os.path.abspath(path) 返回path規(guī)范化的絕對路徑 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[, ...]]) 將多個路徑組合后返回,第一個絕對路徑之前的參數(shù)將被忽略 os.path.getatime(path) 返回path所指向的文件或者目錄的最后存取時間 os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時間 os模塊常用命令

2、sys模塊

主要用于對解釋器相關的操作

sys.argv 命令行參數(shù)List,第一個元素是程序本身路徑 sys.exit(n) 退出程序,正常退出時exit(0) sys.version 獲取Python解釋程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值 sys.platform 返回操作系統(tǒng)平臺名稱 sys.stdout.write('please:') val = sys.stdin.readline()[:-1] sys常用命令

3、pickle模塊

主要用于序列化的操作

pickle:python特有類型和python數(shù)據(jù)類型之間的轉換

該模塊有dump、dumps、load、loads四個方法

pickle.dumps 將數(shù)據(jù)通過特殊的形式轉換成只有pyton才能識別的字符串。

>>> import pickle >>> data = {'1':123,'2':456} >>> print pickle.dumps(data) (dp0 S'1' p1 I123 sS'2' p2 I456 s. pickle.dumps

pickle.dump 主要對文件進行操作,它將數(shù)據(jù)過特殊的形式轉換成只有pyton才能識別的字符串,并寫入文件。

>>> with open('result.pk','w') as f: ... pickle.dump(data,f) ... >>> pickle.dump

pickle.loads 與dumps相對應,將特殊的字符串轉換成python中的數(shù)據(jù)類型。

>>> import pickle >>> s = [1,2,3,4] >>> p1 = pickle.dumps(s) >>> print p1 (lp0 I1 aI2 aI3 aI4 a. >>> s1 = pickle.loads(p1) >>> print s1 [1, 2, 3, 4] pickle.loads

pickle.load 與dump相對應,將特殊字符串的文件抓換成字符串。

>>> import pickle >>> f = open('result.pk','r') >>> s = pickle.load(f) >>> print s {'1': 123, '2': 456} pickle.load

4、logging模塊

用于日志記錄

eg:

import logginglogging.warning("user [alex] attempted wrong password more than 3 times") logging.critical("server is down")#輸出 WARNING:root:user [alex] attempted wrong password more than 3 times CRITICAL:root:server is down logging

把日志寫入文件:

import logginglogging.basicConfig(filename='example.log',level=logging.INFO) logging.debug('This message should go to the log file') logging.info('So should this') logging.warning('And this, too') write log into file

其中下面這句中的level=loggin.INFO意思是,把日志紀錄級別設置為INFO,也就是說,只有比日志是INFO或比INFO級別更高的日志才會被紀錄到文件里,在這個例子, 第一條日志是不會被紀錄的,如果希望紀錄debug的日志,那把日志級別改成DEBUG就行了。

logging.basicConfig(filename='example.log',level=logging.INFO)

加上時間:

import logging logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') logging.warning('is when this event was logged.')

5、time模塊

與時間有關的操作

時間有三種表示方式:

  • 時間戳 ? ? ? ? ? ? ? 1970年1月1日之后的秒,即:time.time()
  • 格式化的字符串 ? ?2014-11-11 11:11, ? ?即:time.strftime('%Y-%m-%d')
  • 結構化時間 ? ? ? ? ?元組包含了:年、日、星期等... time.struct_time ? ?即:time.localtime()

eg:

>>> import time >>> print time.time() 1457588586.28 >>> print time.mktime(time.localtime()) 1457588652.0 >>> print time.gmtime() time.struct_time(tm_year=2016, tm_mon=3, tm_mday=10, tm_hour=5, tm_min=44, tm_sec=33, tm_wday=3, tm_yday=70, tm_isdst=0) >>> print time.strftime('%Y-%m-%d') 2016-03-10>>> import datetime >>> print datetime.datetime.now() 2016-03-10 13:49:32.833639 >>> print datetime.datetime.now() - datetime.timedelta(days=1) 2016-03-09 13:50:25.230468 time

6、re模塊

用于正則匹配

字符:

  . 匹配除換行符以外的任意字符
  \w 匹配字母或數(shù)字或下劃線或漢字
  \s 匹配任意的空白符
  \d 匹配數(shù)字
  \b 匹配單詞的開始或結束
  ^ 匹配字符串的開始
  $ 匹配字符串的結束

次數(shù):

  * 重復零次或更多次
  + 重復一次或更多次
  ? 重復零次或一次
  {n} 重復n次
  {n,} 重復n次或更多次
  {n,m} 重復n到m次

IP: ^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$ 手機號: ^1[3|4|5|8][0-9]\d{8}$

match(pattern, string, flags=0)

從起始位置開始根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個.

  • 正則表達式
  • 要匹配的字符串
  • 標志位,用于控制正則表達式的匹配方式
>>> import re >>> obj = re.match('\d+','123fkdfk') >>> print obj.group() 123

search(pattern, string, flags=0)

根據(jù)模型去字符串中匹配指定內(nèi)容,匹配單個。

>>> obj = re.search('\d+','u12323fdkfl') >>> print obj.group() 12323

findall(pattern, string, flags=0)

上述兩中方式均用于匹配單值,即:只能匹配字符串中的一個,如果想要匹配到字符串中所有符合條件的元素,則需要使用?findall。

>>> obj = re.findall('\d+','fdf343dfldfj098dfdf') >>> print obj ['343', '098']

sub(pattern, repl, string, count=0, flags=0)

用于替換匹配的字符串

>>> content = '123jkfjkf678' >>> new_content = re.sub('\d+','sb',content)#將數(shù)字替換成'sb' >>> print new_content sbjkfjkfsb

split(pattern, string, maxsplit=0, flags=0)

根據(jù)指定匹配進行分組

?

>>> content = "'1-2*((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'" >>> new_content = re.split('\*',content) >>> print new_content ["'1-2", '((60-30+1', '(9-2', '5/3+7/3', '99/4', '2998+10', '568/14))-(-4', '3)/(16-3', "2))'"] >>> >>> new_content = re.split('[\+\-\*\/]+',content) >>> print new_content ["'1", '2', '((60', '30', '1', '(9', '2', '5', '3', '7', '3', '99', '4', '2998', '10', '568', '14))', '(', '4', '3)', '(16', '3', "2))'"] >>>>>> content = "'1-2*((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'" >>> content = re.sub('\s*','',content) >>> new_content = re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)',content,1) >>> print new_content ["'1-2*((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-", '-4*3', "/(16-3*2))'"] re.split

7、random模塊

主要生成隨機數(shù)

>>> import random >>> print random.random() 0.645138583945 >>> print random.randint(1,4) 3 >>> print random.randrange(1,20) 10

生成驗證碼

>>> import random >>> checkcode = '' >>> for i in range(4): ... current = random.randrange(0,4) ... if current != i: ... temp = chr(random.randint(65,90)) ... else: ... temp = random.randint(0,9) ... checkcode +=str(temp) ... >>> print checkcode PBXE

?

轉載于:https://www.cnblogs.com/ahaii/p/5261823.html

總結

以上是生活随笔為你收集整理的Python之模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。