Python day21:常用模塊2

一驼壶、time模塊
import time

一:時(shí)間有三種格式(*****)

1、時(shí)間戳(float 類型):秒數(shù) ===> 用于時(shí)間計(jì)算
    缺省時(shí)刊咳,默認(rèn)是當(dāng)前的時(shí)間

        start=time.time()
        print(start,type(start))


2焰望、結(jié)構(gòu)化的時(shí)間(struct_time 類型) ===> 獲取時(shí)間的某一部分
    將時(shí)間零散的拆分成各個(gè)部分

        res = time.localtime()
        res1 = time.gmtime()

        print(res,type(res))
        print(res.tm_year)

        print(res)
        print(res1)


3廉白、格式化的字符串時(shí)間(str 類型) ===> 用于顯示給人看
    遵循一定格式組織的時(shí)間
    
    gmtime 世界標(biāo)準(zhǔn)時(shí)間

    localtime 當(dāng)?shù)貢r(shí)間

        %p 顯示 上午促脉、下午
                am   pm 

            res=time.strftime("%Y-%m-%d %H:%S:%M %p")
            res=time.strftime("%Y-%m-%d %X")
            print(res,type(res))

二:時(shí)間轉(zhuǎn)換

格式化的字符串 是另外兩者的中介



                    localtime:缺省,則當(dāng)前
                    gmtime                             strftime
      ---------------------->             ---------------------->
時(shí)間戳(timestamp)            結(jié)構(gòu)化的時(shí)間(struct_time)             格式化的字符串時(shí)間(Format String)
      <----------------------             <----------------------
        maktime                             strptime           



轉(zhuǎn)換用到的函數(shù):
        
    1悦污、localtime([secs]) : 將一個(gè)時(shí)間戳轉(zhuǎn)換為當(dāng)前時(shí)區(qū)的struct_time覆旭。
                            secs參數(shù)未提供退子,則以當(dāng)前時(shí)間為準(zhǔn)。
                
                time.localtime()
                time.localtime(1473525444.037215)
    
    2型将、gmtime([secs]) : 將一個(gè)時(shí)間戳轉(zhuǎn)換為UTC時(shí)區(qū)(0時(shí)區(qū))的struct_time
                        和localtime()方法類似寂祥,gmtime()方法是將一個(gè)時(shí)間戳轉(zhuǎn)換為UTC時(shí)區(qū)(0時(shí)區(qū))的struct_time。



    3七兜、mktime(t) : 將一個(gè)struct_time轉(zhuǎn)化為時(shí)間戳丸凭。

                print(time.mktime(time.localtime()))#1473525749.0


    4、strftime(format[, t]) : 把一個(gè)代表時(shí)間的元組或者struct_time(如由time.localtime()和 time.gmtime()返回)轉(zhuǎn)化為格式化的時(shí)間字符串。
                                如果t未指定惜犀,將傳入time.localtime()铛碑。
                                如果元組中任何一個(gè)元素越界,ValueError的錯(cuò)誤將會(huì)被拋出虽界。

                print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56


    5汽烦、strptime(string[, format]) : 把一個(gè)格式化時(shí)間字符串轉(zhuǎn)化為struct_time。實(shí)際上它和strftime()是逆操作莉御。

                print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))


    6撇吞、time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
                                                        tm_wday=3, tm_yday=125, tm_isdst=-1)
            在這個(gè)函數(shù)中,format默認(rèn)為:"%a %b %d %H:%M:%S %Y"礁叔。



2.1 時(shí)間戳--->格式化的字符串

        struct_time=time.localtime(3333.3)
        res=time.strftime("%Y:%m",struct_time)
        print(res)

2.2 格式化的字符串時(shí)間--->時(shí)間戳

        struct_time=time.strptime("2017-07-03 11:11:11","%Y-%m-%d %H:%M:%S")
        res=time.mktime(struct_time)
        print(res)

三:
asctime([t]) : 把一個(gè)表示時(shí)間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'牍颈。
如果沒有參數(shù),將會(huì)將time.localtime()作為參數(shù)傳入琅关。

        print(time.asctime())#Sun Sep 11 00:43:43 2016
        print(time.asctime(time.localtime(3333.3)))

ctime([secs]) : 把一個(gè)時(shí)間戳(按秒計(jì)算的浮點(diǎn)數(shù))轉(zhuǎn)化為time.asctime()的形式煮岁。
                    如果參數(shù)未給或者為None的時(shí)候,將會(huì)默認(rèn)time.time()為參數(shù)死姚。它的作用相當(dāng)于time.asctime(time.localtime(secs))人乓。

        print(time.ctime())  # Sun Sep 11 00:46:38 2016
        print(time.ctime(time.time()))  # Sun Sep 11 00:46:38 2016
        print(time.ctime(3333.3))

四: sleep(secs) : 線程推遲指定的時(shí)間運(yùn)行,單位為秒都毒。

        time.sleep(3)

==========================> datetime模塊========================
import datetime

1色罚、獲取當(dāng)前時(shí)間
print(datetime.datetime.now())

2、時(shí)間戳---轉(zhuǎn)成--->日期格式

3账劲、只顯示日期:
    print(datetime.date.fromtimestamp(time.time()))
    # 2020-07-30

4戳护、顯示日期+時(shí)分
    print(datetime.datetime.fromtimestamp(time.time()))
    # 2020-07-30 16:20:58.497910

5、加時(shí)間
print(datetime.datetime.now() + datetime.timedelta(days=3))

6瀑焦、減時(shí)間
print(datetime.datetime.now() + datetime.timedelta(days=-3))

7腌且、替換時(shí)間
print(datetime.datetime.now())
new_res=res.replace(year=1999,month=9)
print(new_res)

==========================> random模塊 <=============================

        import random

# os.path.以下各個(gè)函數(shù)

random模塊中的常用函數(shù):

1、random(): 隨機(jī) 產(chǎn)生一個(gè)小數(shù) (0,1)    
            print(random.random())
            #大于0且小于1之間的小數(shù)

2榛瓮、randint(): 隨機(jī) 產(chǎn)生一個(gè)整數(shù) [a,b]         
        
            print(random.randint(1,3)) #[1,3]

3铺董、choice(): 隨機(jī) 選取一個(gè)元素
        
            print(random.choice([1,'23',[4,5]]))

4、sample(): 隨機(jī) 選取列表中任意2個(gè)元素進(jìn)行組合
        
            print(random.sample([1,'23',[4,5]],2))

5禀晓、uniform(): 隨機(jī) 產(chǎn)生一個(gè)小數(shù)(a,b) 
            
            print(random.uniform(1,3))
            # 大于1小于3的小數(shù)精续,如1.927109612082716

6、shuffle(): 打亂列表中元素的順序,相當(dāng)于"洗牌"
        
        item=[1,3,5,7,9]
        random.shuffle(item)
        print(item)

隨機(jī)驗(yàn)證碼原理:隨機(jī)的字母 粹懒、隨機(jī)的數(shù)字 里面挑選一個(gè)作為一個(gè)結(jié)果

    def make_code(n=5):
        res = ''
        for i in range(n):
            s1 = str(random.randint(0, 9))  # 產(chǎn)生數(shù)字
            s2 = chr(random.randint(65, 90)) # 產(chǎn)生字母
            # 每一輪生成一個(gè)數(shù)字or字母重付,將他們連接在總的字符串上
            res += random.choice([s1, s2])
        return res

    print(make_code(4))

========================> os模塊 <===============================

os模塊是與操作系統(tǒng)交互的一個(gè)接口
在Linux和Mac平臺(tái)上,該函數(shù)會(huì)原樣返回path凫乖,在windows平臺(tái)上會(huì)將路徑中所有字符轉(zhuǎn)換為小寫确垫,并將所有斜杠轉(zhuǎn)換為飯斜杠弓颈。

import os

# os.path.以下各個(gè)函數(shù)

os.path下的常用函數(shù)

1、dirname(): 返回path的目錄删掀∠杓剑【推薦此方式!】
                其實(shí)就是os.path.split(path)的第一個(gè)元素

        print(os.path.dirname("D:/python全棧15期/day21/03os模塊.py"))

    2爬迟、normpath(): 返回path的路徑橘蜜,【不推薦此方式菊匿!】
        
        res=os.path.join(
            __file__,
            "..",
            ".."
        )

        print(os.path.normpath(res))

3付呕、basename(): 返回path最后的文件名。
                如果path以/或\結(jié)尾跌捆,那么就會(huì)返回空值徽职。
                即os.path.split(path)的第二個(gè)元素

        print(os.path.basename("D:/python全棧15期/day21/03os模塊.py"))

4、join(): 將多個(gè)路徑組合后返回佩厚,
            第一個(gè)絕對(duì)路徑之前的參數(shù)將被忽略

        print(os.path.join("a",'b','D:\c','d.txt'))

5姆钉、isabs():判斷是否是絕對(duì)路徑

        print(os.path.isabs("D:/python全棧15期/day21/"))
        print(os.path.isabs("/python全棧15期/day21/"))

6、rename():  重命名文件/目錄

7抄瓦、remove(): 刪除一個(gè)文件

8潮瓶、split(path): 將path分割成目錄和文件名二元組返回

9、getsize(): 返回該文件/文件夾的大小

10钙姊、exists(): 判斷路徑是否存在  
                如果path存在毯辅,返回True;如果path不存在煞额,返回False
        
        print(os.path.exists("D:/python全棧15期/day21/"))

11思恐、isfile(): 判斷文件是否存在  
                如果path是一個(gè)存在的文件!文件膊毁!文件胀莹!,返回True婚温。否則返回False

12描焰、isdir(): 判斷目錄是否存在
                如果path是一個(gè)存在的目錄!目錄栅螟!目錄荆秦!,則返回True嵌巷。否則返回False

13萄凤、split(): 將path分割成目錄和文件名二元組返回

14、listdir('dirname'): 列出指定目錄下的所有文件和子目錄搪哪,
                          包括隱藏文件靡努,并以列表方式打印

模擬windows的cmd.exe終端:

    import os
    print(os.listdir("."))

    import os

    cmd=input(r"""
    Microsoft Windows [版本 10.0.17763.1339]
    (c) 2018 Microsoft Corporation。保留所有權(quán)利。

    %s=====> """ %os.getcwd())
    res=os.system(cmd)
    print('='*100)
    print(res)


    import os
    print(__file__)
    print(os.path.abspath(__file__))

    res=os.path.split("D:/python全棧15期/day21/03 os模塊.py")
    # 用于將 所在的文件夾的路徑惑朦,和文件名 相分割開兽泄,存進(jìn)元組里面
    print(res)

======================> subprocess模塊 <=================================

    import subprocess

    # pwd ; sasdfasdf ;echo 123

    obj = subprocess.Popen("**這里是命令名稱**", shell=True,
                           stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE
                           )

    res1=obj.stdout.read()
    res2=obj.stderr.read()
    # print(res1.decode('gbk'))
    print(res2.decode('gbk'))

不同的進(jìn)程,都有只屬于自己的內(nèi)存空間(這是物理隔離)漾月;進(jìn)程不能訪問其他進(jìn)程的內(nèi)存空間(安全保護(hù)機(jī)制)

為滿足 不同進(jìn)程之間的通信(數(shù)據(jù)共享)的需求病梢,開辟的共享內(nèi)存

管道 屬于共享內(nèi)存;不同的進(jìn)程都可以訪問這塊內(nèi)存

操作系統(tǒng)命令的結(jié)果默認(rèn) 是直接返回到終端梁肿,

通過將結(jié)果蜓陌,接收放到管道,可以對(duì) 結(jié)果進(jìn)行處理


應(yīng)用程序 的命令 都是調(diào)用 操作系統(tǒng)的命令吩蔑,來執(zhí)行服務(wù)

windows提供的cmd.exe也是一個(gè)操作系統(tǒng)的提供的一個(gè)應(yīng)用程序

一個(gè)windows系統(tǒng)命令钮热,就是一個(gè)程序

命令運(yùn)行程序格式 以空格為分隔符

解釋器 程序名 + 傳入的參數(shù)

也相當(dāng)于,input方式烛芬,一次輸入一個(gè)參數(shù)
相比較而言隧期,這種寫在一行的形式,更為簡(jiǎn)潔
區(qū)別在于赘娄,傳入程序所需要的參數(shù) 的方式

在windows的cmd中 由于windows命令是.exe直接運(yùn)行的文件仆潮,所以不需要加解釋器

而要運(yùn)行 .py文件的話,則需要加python解釋器

sys.argv 將參數(shù)采集 命令行中傳入的參數(shù)遣臼, 用索引[index]來區(qū)分采集的是哪一個(gè)參數(shù)

永久的配置 寫到 配置文件中
臨時(shí)的配置 通過 傳入?yún)?shù)

======================sys模塊==========================

    import sys

    sys.path
    print(sys.argv)

    src_file = input("源文件路徑:").strip()
    dst_file = input("目標(biāo)文件路徑:").strip()
    src_file = sys.argv[1]
    dst_file = sys.argv[2]

    with open(r"%s" %src_file,mode='rb') as f1,open(r"%s" %dst_file,mode='wb') as f2:
        for line in f1:
            f2.write(line)

實(shí)現(xiàn)打印進(jìn)度條=====================

原理:通過靜態(tài)的方案實(shí)現(xiàn)動(dòng)態(tài)的效果

原理闡述:
import time
print("[# ]",end='')
time.sleep(0.3)
print("\r[## ]",end='')
time.sleep(0.3)
print("\r[### ]",end='')
time.sleep(0.3)
print("\r[#### ]",end='')

    print("[%-15s]" % "###",)
    print("[%-15s]" % "####",)

實(shí)現(xiàn)代碼:
import time

    def progress(percent):
        if percent > 1:
            percent=1

        # 第二個(gè)%號(hào)代表取消第一個(gè)%的特殊意義 
        # -50用來控制對(duì)齊方式性置、寬度
        print("\r[%-50s] %d%%" % ("#"*int(50*percent),int(100 * percent)),end='')

    total_size = 1025
    recv_size = 0

    while recv_size < total_size:
        
        # 每次下載1024
        time.sleep(0.3)

        #模擬數(shù)據(jù)的傳輸延遲
        recv_size+=1024

        #接收的比例
        percent = recv_size / total_size

        progress(percent)

\r 是在行首打印

進(jìn)度條的原理:用 靜態(tài) 模擬出 動(dòng)態(tài) 效果
替換整體靜態(tài),速度很快時(shí)暑诸,就成了動(dòng)態(tài)

% 的優(yōu)先級(jí)比 * 高
在進(jìn)度條中蚌讼,要使用括號(hào),標(biāo)注優(yōu)先級(jí)

1 sys.argv 命令行參數(shù)List个榕,第一個(gè)元素是程序本身路徑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末篡石,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子西采,更是在濱河造成了極大的恐慌凰萨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件械馆,死亡現(xiàn)場(chǎng)離奇詭異胖眷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)霹崎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門珊搀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尾菇,你說我怎么就攤上這事境析∏羟梗” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵劳淆,是天一觀的道長链沼。 經(jīng)常有香客問我,道長沛鸵,這世上最難降的妖魔是什么括勺? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮曲掰,結(jié)果婚禮上疾捍,老公的妹妹穿的比我還像新娘。我一直安慰自己蜈缤,他們只是感情好拾氓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布冯挎。 她就那樣靜靜地躺著底哥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪房官。 梳的紋絲不亂的頭發(fā)上趾徽,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音翰守,去河邊找鬼孵奶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜡峰,可吹牛的內(nèi)容都是我干的了袁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼湿颅,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼载绿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起油航,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤崭庸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谊囚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怕享,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年镰踏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了函筋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奠伪,死狀恐怖跌帐,靈堂內(nèi)的尸體忽然破棺而出灌诅,到底是詐尸還是另有隱情,我是刑警寧澤含末,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布猜拾,位于F島的核電站,受9級(jí)特大地震影響佣盒,放射性物質(zhì)發(fā)生泄漏挎袜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一肥惭、第九天 我趴在偏房一處隱蔽的房頂上張望盯仪。 院中可真熱鬧,春花似錦蜜葱、人聲如沸全景。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爸黄。三九已至,卻和暖如春揭鳞,著一層夾襖步出監(jiān)牢的瞬間炕贵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工野崇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留称开,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓乓梨,卻偏偏與公主長得像鳖轰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扶镀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353