python 基礎之http,os模塊,正則

打開文件方式html

f = open('your_file.txt','r')

f=open('your_file.txt','w')
 f=open('your_file.txt','a')

第二個參數爲對文件的操做方式,python

’w’是寫文件,已存在的同名文件會被清空,不存在則會建立一個;正則表達式

’r’是讀取文件,不存在會報錯;shell

’a’是在文件尾部添加內容,不存在會建立文件,存在則直接在尾部進行添加;  數據庫

文件對象的操做方法
編輯文件
f=open("your_file.txt",'w') 
f.write("hahahaha")
f.close()

讀文件express

f.read()          #讀所有,或者讀字節數
f.readline()      #讀一行
f.readlines()    #讀所有,每一爲列表的一個元素,每一個元素後面有\n

 f.read(size),size是可選項目,指定字符串長度。size未指定或者爲負數,會讀取整個文件。當文件大小是當前機器內存兩倍時,會出錯。若是到了文件末尾,會顯示空字符串。編程

f.readline(),注意:返回的每行結尾會自動加換行符'\n',若是到文件末尾就返回空字符串''。 json

os模塊
os.sep:取代操做系統特定的路徑分隔符
os.name:指示你正在使用的工做平臺。好比對於Windows,它是'nt',而對於Linux/Unix用戶,它是'posix'。
os.getcwd:獲得當前工做目錄,即當前python腳本工做的目錄路徑。
os.getenv()和os.putenv:分別用來讀取和設置環境變量
os.listdir():返回指定目錄下的全部文件和目錄名
os.remove(file):刪除一個文件
os.stat(file):得到文件屬性
os.chmod(file):修改文件權限和時間戳
os.mkdir(name):建立目錄
os.rmdir(name):刪除目錄
os.removedirs(r「c:\python」):刪除多個目錄
os.system():運行shell命令
os.exit():終止當前進程
os.linesep:給出當前平臺的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
os.path.split():返回一個路徑的目錄名和文件名
os.path.isfile()和os.path.isdir()分別檢驗給出的路徑是一個目錄仍是文件
os.path.existe():檢驗給出的路徑是否真的存在
os.listdir(dirname):列出dirname下的目錄和文件
os.getcwd():得到當前工做目錄
os.curdir:返回當前目錄('.')
os.chdir(dirname):改變工做目錄到dirname
os.path.isdir(name):判斷name是否是目錄,不是目錄就返回false
os.path.isfile(name):判斷name這個文件是否存在,不存在返回false
os.path.exists(name):判斷是否存在文件或目錄name
os.path.getsize(name):或得文件大小,若是name是目錄返回0L
os.path.abspath(name):得到絕對路徑
os.path.isabs():判斷是否爲絕對路徑
os.path.normpath(path):規範path字符串形式
os.path.split(name):分割文件名與目錄(事實上,若是你徹底使用目錄,它也會將最後一個目錄做爲文件名而分離,同時它不會判斷文件或目錄是否存在)
os.path.splitext():分離文件名和擴展名
os.path.join(path,name):鏈接目錄與文件名或目錄
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路徑

datetime模塊api

datetime模塊一般用來操做日期信息(年月日和時分秒),經常使用的方法有:

datetime.datetime.now():返回當前日期時間的datetime對象,對象中包含年月日和時分秒信息,可經過str它來獲得日期時間信息的字符串。
datetime.datetime.fromtimestamp(timestamp):將時間戳轉換成datetime對象,並返回。
datetime.datetime.strptime(date_string, format):將字符串按照指定格式轉成datetime對象,並返回,如:datetime.datetime.strptime('2016-09-04', '%Y-%m-%d')。
datetime.datetime.strftime(datetime, format):將datetime對象轉換爲指定格式的字符串,並返回,如:datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')。
datetime.timedelta:timedelta對象初始化時指定日期時間信息,可用它與datetime對象進行加減操做,並返回新的datetime對象,固然timedelta對象之間也能夠進行加減操做,返回新的timedelta對象。
timetuple():將datetime對象轉換成struct_time對象,並返回

類和對象數據結構

類(Class): 用來描述具備相同的屬性和方法的對象的集合。它定義了該集合中每一個對象所共有的屬性和方法。對象是類的實例。。
對象:經過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。

 建立類

使用 class 語句來建立一個新類,class 以後爲類的名稱並以冒號結尾:

lass ClassName:
   '類的幫助信息'   #類文檔字符串
   class_suite  #類體
class Employee:
   '全部員工的基類'
   empCount = 0
 
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount
 
   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
  • empCount 變量是一個類變量,它的值將在這個類的全部實例之間共享。你能夠在內部類或外部類使用 Employee.empCount 訪問。

  • 第一種方法__init__()方法是一種特殊的方法,被稱爲類的構造函數或初始化方法,當建立了這個類的實例時就會調用該方法

  • self 表明類的實例,self 在定義類的方法時是必須有的,雖然在調用時沒必要傳入相應的參數。

 

self表明類的實例,而非類

類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()

建立實例對象

實例化類其餘編程語言中通常用關鍵字 new,可是在 Python 中並無這個關鍵字,類的實例化相似函數調用方式。

如下使用類的名稱 Employee 來實例化,並經過 __init__ 方法接收參數。

"建立 Employee 類的第一個對象"
emp1 = Employee("Zara", 2000)
"建立 Employee 類的第二個對象"
emp2 = Employee("Manni", 5000)

Python內置類屬性

__dict__ : 類的屬性(包含一個字典,由類的數據屬性組成)
__doc__ :類的文檔字符串
__name__: 類名
__module__: 類定義所在的模塊(類的全名是'__main__.className',若是類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod)
__bases__ : 類的全部父類構成元素(包含了一個由全部父類組成的元組)

類的繼承

面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是經過繼承機制。

經過繼承建立的新類稱爲子類或派生類,被繼承的類稱爲基類、父類或超類。

總結:

一、若是在子類中須要父類的構造方法就須要顯示的調用父類的構造方法,或者不重寫父類的構造方法。詳細說明可查看:python 子類繼承父類構造函數說明。 二、在調用基類的方法時,須要加上基類的類名前綴,且須要帶上 self 參數變量。區別在於類中調用普通函數時並不須要帶上 self 參數 三、Python 老是首先查找對應類型的方法,若是它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。 

 正則表達式 

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。

re.match函數

re.match 嘗試從字符串的起始位置匹配一個模式,若是不是起始位置匹配成功的話,match()就返回none。

re.match(pattern, string, flags=0)

 pattern:匹配的正則表達式 

 string:要匹配的字符串 

 flags:標誌位,用於控制正則表達式的配方法 

匹配對象方法 描述
group(num=0) 匹配的整個表達式的字符串,group() 能夠一次輸入多個組號,在這種狀況下它將返回一個包含那些組所對應值的元組。
groups() 返回一個包含全部小組字符串的元組,從 1 到 所含的小組號。

re.search方法

re.search 掃描整個字符串並返回第一個成功的匹配。

re.search(pattern, string, flags=0)

 pattern:匹配的正則表達式 

 string:要匹配的字符串 

 flags:標誌位,用於控制正則表達式的配方法 

匹配對象方法 描述
group(num=0) 匹配的整個表達式的字符串,group() 能夠一次輸入多個組號,在這種狀況下它將返回一個包含那些組所對應值的元組。
groups() 返回一個包含全部小組字符串的元組,從 1 到 所含的小組號。

區別

re.match只匹配字符串的開始,若是字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。  

檢索和替換

re.sub用於替換字符串中的匹配項

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

 pattern:匹配的正則表達式 

 string:要匹配的字符串 

 flags:標誌位,用於控制正則表達式的配方法   

  •    count : 模式匹配後替換的最大次數,默認 0 表示替換全部的匹配。

re.compile 函數

compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

re.compile(pattern[, flags])
  • pattern : 一個字符串形式的正則表達式

  • flags : 可選,表示匹配模式,好比忽略大小寫,多行模式等,具體參數爲:

    •  re.I 忽略大小寫
    • re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴於當前環境
    • re.M 多行模式
    • re.S 即爲 . 而且包括換行符在內的任意字符(. 不包括換行符)
    • re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字符屬性數據庫
    • re.X 爲了增長可讀性,忽略空格和 # 後面的註釋

findall

在字符串中找到正則表達式所匹配的全部子串,並返回一個列表,若是沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配全部。

findall(string[, pos[, endpos]]) 
  • string : 待匹配的字符串。
  • pos : 可選參數,指定字符串的起始位置,默認爲 0。
  • endpos : 可選參數,指定字符串的結束位置,默認爲字符串的長度。

re.finditer

和 findall 相似,在字符串中找到正則表達式所匹配的全部子串,並把它們做爲一個迭代器返回

re.finditer(pattern, string, flags=0) 

re.split

split 方法按照可以匹配的子串將字符串分割後返回列表,它的使用形式以下:

re.split(pattern, string[, maxsplit=0, flags=0]) 
參數 描述
pattern 匹配的正則表達式
string 要匹配的字符串。
maxsplit 分隔次數,maxsplit=1 分隔一次,默認爲 0,不限制次數。
flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標誌

正則表達式對象

re.RegexObject

re.compile() 返回 RegexObject 對象。

re.MatchObject

group() 返回被 RE 匹配的字符串。

  • start() 返回匹配開始的位置
  • end() 返回匹配結束的位置
  • span() 返回一個元組包含匹配 (開始,結束) 的位置

http請求

1、python自帶庫----urllib2

簡單的get請求

import urllib2
response = urllib2.urlopen('http://localhost:8080/jenkins/api/json?pretty=true')
print response.read() 

post請求

import urllib2
import urllib
post_data = urllib.urlencode({})
response = urllib2.urlopen('http://localhost:8080/, post_data)
print response.read()
print response.getheaders()

2、python自帶庫--httplib

get請求

 

import httplib
conn = httplib.HTTPConnection("www.python.org")
conn.request("GET", "/index.html")
r1 = conn.getresponse()
print r1.status, r1.reason
data1 = r1.read()
conn.request("GET", "/parrot.spam")
r2 = conn.getresponse()
data2 = r2.read()
conn.close()

 

post請求

import httplib, urllib
params = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})
headers = {"Content-type": "application/x-www-form-urlencoded",  "Accept": "text/plain"}

conn = httplib.HTTPConnection("bugs.python.org")
conn.request("POST", "", params, headers)
response = conn.getresponse()
data = response.read()
print data
conn.close() 

3、第三方庫--requests

get請求

print requests.get('http://localhost:8080).text

post請求

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print r.text

  

 

  

  

 

  

 

  

  

 

 

  

 

  • 一、若是在子類中須要父類的構造方法就須要顯示的調用父類的構造方法,或者不重寫父類的構造方法。詳細說明可查看:python 子類繼承父類構造函數說明
  • 二、在調用基類的方法時,須要加上基類的類名前綴,且須要帶上 self 參數變量。區別在於類中調用普通函數時並不須要帶上 self 參數
  • 三、Python 老是首先查找對應類型的方法,若是它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。
相關文章
相關標籤/搜索