1.模塊
函數的優點之一,就是可以使用函數將代碼塊與主程序分離,通過給函數指定一個描述性的名稱,並將函數存儲在被稱為模塊的獨立文件中,再將模塊導入主程序中,通過import語句允許在當前運行的程序文件中使用模塊中的代碼,一個.py文件就稱為一個模塊,包含了Python對象定義和Python語句。
如下就是一個簡單的模塊cal.py
def cal(x,y):
return x+y
導入模塊的方法有很多種
import module #導入整個模塊
from module.xx.xx import xx #導入模塊中的特定函數
from module.xx.xx import xx as rename #使用as給函數指定別名
from module.xx.xx import * #導入模塊中的所有函數(不推薦)
對於上面一個模塊,如果想要在另一文件中調用它,即:
這種就通過import導入,但是調用的時候需要使用模塊名.函數名的方式調用,即
import cal
print(cal.cal(3,5))
那么函數再導入模塊的時候是以哪個路徑為基准呢?
import sys
print(sys.path)
通過sys.path輸出的路徑,就是尋找該模塊的基准路徑。
模塊分為三種
- 自定義模塊
- 第三方模塊
- 內置模塊
- 自定義模塊
2.常用模塊
- time
時間有關的操作,有三種表達方式: - 1.時間戳(time.time)
- 2.結構化時間(time.localtime)
- 3.格式化的字符串(time.striftime)
import time
print(time.time()) #時間戳,是指從1970年1月1日0點0分到當前時間過了多少秒,常用來計算
運行結果:1513730364.4014938
print(time.localtime()) #結構化時間,通過這種方式,可以截取具體的年月日時分秒等信息
運行結果:time.struct_time(tm_year=2017, tm_mon=12, tm_mday=20, tm_hour=8, tm_min=40, tm_sec=58, tm_wday=2, tm_yday=354, tm_isdst=0)
t=time.localtime()
print(t.tm_year) #運行結果:2017 可以通過.關鍵字的方式,截取想要的信息
print(time.strftime("%Y-%m-%d,%X")) #格式化的字符串,必須寫入想輸出的時間格式
運行結果:2017-12-20,08:48:01
將元組形式的時間轉化為字符串形式,返回時間形式為:Thu Dec 28 09:21:06 2017
print(time.asctime())
返回結果格式同asctime
print(time.ctime())
返回UTC時間結構化時間
print(time.gmtime())
三種表達方式的互相轉化
格式化的字符串轉換成結構化時間:
print(time.strptime("2017-12-20","%Y-%m-%d"))
將結構化時間轉換成時間戳
print(time.mktime(time.localtime()))
將結構化時間轉換成格式化的字符串
print(time.strftime("%Y-%m-%d %X",time.localtime()))
- random
隨機模塊,主要功能如下:
import random
#隨機生成一個0-1的浮點數
print(random.random())
#隨機生成一個整數
#生成一個指定范圍內的隨機浮點數
print(random.uniform(10,20))
#隨機生成一個整數
print(random.randint(1,9))
#從指定范圍內,按指定基數遞增的集合中 獲取一個隨機數
print(random.randrange(10,100,2)) #隨機取10-100之間的偶數
#從序列中隨機獲取一個元素
print(random.choice(["tuple","list","dic"]))
#將一個列表中的元素打亂
p=["tuple","list","dic"]
random.shuffle(p)
print(p)
隨機數小案例 ,生成一個五位的隨機數
import random
def random_code():
res=""
for i in range(5):
num=random.randint(0,9)
alf=chr(random.randint(60,100))
result=str(random.choice([num,alf]))
res+=result
return res
print(random_code())
- os模塊
提供對操作系統進行調用的接口,該模塊的介紹我在linux操作系統下完成
os.getcwd() 獲取當前所在路徑
os.chdir("test") 改變當前的工作路徑,相當於cd
os.makedirs('test/test1') 創建多級目錄
os.removedirs('test1') 遞歸刪除,如目錄為空,則刪除
os.mkdir('test') 創建單級目錄
os.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.join(path1[, path2[, ...]]) 將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略
- sys模塊
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 sys
import time
def calc(num, total):
rate = float(num) / float(total) #float 浮點數關鍵字
rate_num = int(rate * 100)
r = '\r%d%%' % (rate_num, ) #要加上/r轉義符,表示將輸出的內容返回到第一個指針,即覆蓋前面的內容
sys.stdout.write(r)
sys.stdout.flush()
if __name__ == '__main__': #這條語句,如果用在被調用文件里面,用於被調用文件的一個測試
for i in range(0, 101): # 如果放在執行文件里面,就是不想讓該文件讓齊塔程序調用
time.sleep(0.1)
calc(i, 100)
進度條小案例
import sys
import time
for i in range(100):
sys.stdout.write("#")
time.sleep(0.1)
sys.stdout.flush()
因為工作原因,最近一周沒有更新博客,我會在這周補回來,下一篇文章我會重點寫re模塊。