15. 常用模塊(time/os/sys)

[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']

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容