[TOC]
初涉模塊
在python中,能開(kāi)辟自己作用域的只有函數(shù)、類(lèi)以及模塊
for循環(huán)if-else循環(huán)均不能實(shí)現(xiàn)開(kāi)辟自己的作用域。
>>> x = 3
>>> for i in range(10):
... x = 55
...
...
>>> print(x)
55
“模塊就是.py文件”
import xxxxx
time
- 時(shí)間戳:
>>> time.time()
1493168755.906269
- 時(shí)間字符串
>>> time.strftime('%Y-%m-%d %X')
'2017-04-26 09:06:58'
小寫(xiě)的y表示后兩位的年份
后面的M和m分別代表分鐘數(shù)(minutes)和月份(month)
Commonly used format codes:
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.
- 結(jié)構(gòu)化時(shí)間
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=9, tm_min=15, tm_sec=13, tm_wday=2, tm_yday=116, tm_isdst=0)
tm_isdst----夏令時(shí)
>>> c = time.localtime()
>>> c.tm_year
2017
結(jié)構(gòu)化時(shí)間就是用來(lái)對(duì)時(shí)間進(jìn)行操作的
>>> help(time.localtime)
Help on built-in function localtime in module time:
localtime(...)
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
tm_sec,tm_wday,tm_yday,tm_isdst)
Convert seconds since the Epoch to a time tuple expressing local time.
When 'seconds' is not passed in, convert the current time instead.
時(shí)間形式的轉(zhuǎn)換
時(shí)間戳
||
mktime/
>>> time.mktime(time.localtime())
1493170076.0
||
格式化時(shí)間
strftime/strptime
>>> time.strftime('%Y-%m-%d %X',time.localtime(time.time()-24*3600))
'2017-04-25 09:33:00'
||
time.ctime()
time.asctime()
隨機(jī)數(shù)模塊random
random.random()
默認(rèn)0-1取浮點(diǎn)數(shù)
規(guī)定范圍取浮點(diǎn)數(shù)
>>> random.uniform(1,3)
2.969686720232199
范圍取整
>>> random.randint(1,9)
5
>>> random.randint(1,9)
4
>>> random.randint(1,9)
1
>>> random.randrange(1,9)
6
>>>
>>> random.randrange(1,9)
2
規(guī)定范圍取值
>>> random.choice(['a','b','c','d'])
'c'
>>> random.choice(['a','b','c','d'])
'c'
>>> random.choice(['a','b','c','d'])
'a'
>>> random.choice(['a','b','c','d'])
'b'
>>> random.choice(['a','b','c','d'])
'a'
規(guī)定范圍取多個(gè)值
>>> random.sample(['a','b','c','d'],2)
['a', 'c']
隨機(jī)排序
>>> item = [1,2,4,5,9,6,3]
>>> random.shuffle(item)
>>> item
[4, 6, 5, 1, 2, 3, 9]
應(yīng)用實(shí)例:生成五位驗(yàn)證碼
import random
def validate():
l=[chr(i) for i in range(97,123)]
l.extend([1,22])
# .extend方法就是一個(gè)操作,沒(méi)有返回值
item =random.sample(l,5)
sumstr = ''
for i in item:
sumstr += i
print(sumstr)
validate()
hashlib
摘要算法
計(jì)算一個(gè)字符串的md5值
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update('scott')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Unicode-objects must be encoded before hashing
>>> m.update(b'scott')
>>> print(m.hexdigest())
21f63c6e971cd913a9c147e8652ca659
import hashlib
m= hashlib.md5()
m.update('alex'.encode('utf8'))
print(m.hashdigest())
os模塊
import os
# 當(dāng)前工作目錄
>>> os.getcwd()
'D:\\Users\\sss'
# 修改當(dāng)前工作目錄
>>> os.chdir('I:')
>>> os.getcwd()
'I:\\'
# 創(chuàng)建文件
>>> os.makedirs('aaa/bbb')
# 刪除文件
>>> os.removedirs('aaa/bbb')
# 如果文件不為空,則無(wú)法刪除
>>> os.rmdir('aaa/bbb')
# 查看當(dāng)前的文件夾內(nèi)容
>>> os.listdir()
['$RECYCLE.BIN', 'cn_windows_10_enterprise_x64_dvd_6846957', 'System Volume Information', '~putfile0.im_', '游戲']
# 查看文件狀態(tài)
>>> os.stat('游戲')
os.stat_result(st_mode=16895, st_ino=13510798882112605, st_dev=1009602189, st_nlink=1, st_uid=0, st_gid=0, st_size=98304, st_atime=1493138044, st_mtime=1493138044, st_ctime=1492582673)
os.system
os.getcwd() 獲取當(dāng)前工作目錄,即當(dāng)前python腳本工作的目錄路徑
os.chdir("dirname") 改變當(dāng)前腳本工作目錄;相當(dāng)于shell下cd
os.curdir 返回當(dāng)前目錄: ('.')
os.pardir 獲取當(dāng)前目錄的父目錄字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多層遞歸目錄
os.removedirs('dirname1') 若目錄為空,則刪除,并遞歸到上一級(jí)目錄,如若也為空,則刪除,依此類(lèi)推
os.mkdir('dirname') 生成單級(jí)目錄;相當(dāng)于shell中mkdir dirname
os.rmdir('dirname') 刪除單級(jí)空目錄,若目錄不為空則無(wú)法刪除,報(bào)錯(cuò);相當(dāng)于shell中rmdir dirname
os.listdir('dirname') 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表方式打印
os.remove() 刪除一個(gè)文件
os.rename("oldname","newname") 重命名文件/目錄
os.stat('path/filename') 獲取文件/目錄信息
os.sep 輸出操作系統(tǒng)特定的路徑分隔符,win下為"\\",Linux下為"/"
os.linesep 輸出當(dāng)前平臺(tái)使用的行終止符,win下為"\t\n",Linux下為"\n"
os.pathsep 輸出用于分割文件路徑的字符串 win下為;,Linux下為:
os.name 輸出字符串指示當(dāng)前使用平臺(tái)。win->'nt'; Linux->'posix'
os.system("bash command") 運(yùn)行shell命令,直接顯示
os.environ 獲取系統(tǒng)環(huán)境變量
os.path.abspath(path) 返回path規(guī)范化的絕對(duì)路徑
os.path.split(path) 將path分割成目錄和文件名二元組返回
os.path.dirname(path) 返回path的目錄。其實(shí)就是os.path.split(path)的第一個(gè)元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\結(jié)尾,那么就會(huì)返回空值。即os.path.split(path)的第二個(gè)元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是絕對(duì)路徑,返回True
os.path.isfile(path) 如果path是一個(gè)存在的文件,返回True。否則返回False
os.path.isdir(path) 如果path是一個(gè)存在的目錄,則返回True。否則返回False
os.path.join(path1[, path2[, ...]]) 將多個(gè)路徑組合后返回,第一個(gè)絕對(duì)路徑之前的參數(shù)將被忽略
os.path.getatime(path) 返回path所指向的文件或者目錄的最后存取時(shí)間
os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時(shí)間
os.path.getsize(path) 返回path的大小
>>> os.system('dir')
驅(qū)動(dòng)器 I 中的卷沒(méi)有標(biāo)簽。
卷的序列號(hào)是 3C2D-4E8D
I:\ 的目錄
2017/03/25 23:54 <DIR> cn_windows_10_enterprise_x64_dvd_6846957
2017/03/26 00:43 185,526,784 ~putfile0.im_
2017/04/26 00:34 <DIR> 游戲
1 個(gè)文件 185,526,784 字節(jié)
2 個(gè)目錄 29,074,653,184 可用字節(jié)
0
#獲取絕對(duì)路徑
>>> os.path.abspath('游戲')
'I:\\游戲'
>>> b = os.path.basename('I:\\游戲')
>>> d = os.path.dirname('I:\\游戲')
>>> print(d,b)
I:\ 游戲
# 操作系統(tǒng)的特定分隔符
>>> print(d+os.sep+b)
I:\\游戲
# 正確的拼接路徑方式
>>> os.path.join(d,b)
'I:\\游戲'
sys
sys.argv 命令行參數(shù)List,第一個(gè)元素是程序本身路徑
sys.exit(n) 退出程序,正常退出時(shí)exit(0)
sys.version 獲取Python解釋程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模塊的搜索路徑,初始化時(shí)使用PYTHONPATH環(huán)境變量的值
sys.platform 返回操作系統(tǒng)平臺(tái)名稱(chēng)
>>> import sys
>>> sys.version
'3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]'
# sys.argv
>>> sys.path
['', 'D:\\Program Files\\Python36\\python36.zip', 'D:\\Program Files\\Python36\\DLLs', 'D:\\Program Files\\Python36\\lib', 'D:\\Program Files\\Python36', 'D:\\Program Files\\Python36\\lib\\site-packages']