Day16 os模块、time模块、random模、math模块
1.os模塊-對(duì)系統(tǒng)就行操作
#system() 在python中執(zhí)行系統(tǒng)命令
#popen() 執(zhí)行系統(tǒng)命令返回對(duì)象,通過read方法讀出字符串
#listdir() 獲取指定文件夾中所有內(nèi)容的名稱列表
#getcwd() 獲取當(dāng)前文件所在的默認(rèn)路徑
#chdir() 修改當(dāng)前文件工作的默認(rèn)路徑
#environ 獲取或修改環(huán)境變量
#--os 模塊屬性
#name 獲取系統(tǒng)標(biāo)識(shí) linux,mac ->posix windows -> nt
#sep 獲取路徑分割符號(hào) linux,mac -> / window-> \
#linesep 獲取系統(tǒng)的換行符號(hào) linux,mac -> \n window->\r\n 或 \n
?
# ### os 對(duì)系統(tǒng)進(jìn)行操作 import os #system() 在python中執(zhí)行系統(tǒng)命令 # os.system("touch ceshi1.txt") #linux # os.system("ifconfig") # os.system("mspaint") # windows # os.system("ipconfig")#popen() 執(zhí)行系統(tǒng)命令返回對(duì)象,通過read方法讀出字符串 # 使用popen 來解決windows 亂碼的bug ''' obj = os.popen("ipconfig") print(obj) res = obj.read() print(res) ''' #listdir() 獲取指定文件夾中所有內(nèi)容的名稱列表 # 相對(duì)路徑 res = os.listdir(".") print(res) res = os.listdir("./ceshi100") print(res) # 絕對(duì)路徑 (以 / 開頭) # res = os.listdir("/mnt/hgfs/gongxiang_16/day16") # print(res)#getcwd() 獲取當(dāng)前文件所在的默認(rèn)路徑 res = os.getcwd() print(res) # __file__ 魔術(shù)屬性 : 獲取當(dāng)前文件的完整路徑 print(__file__)#chdir() 修改當(dāng)前文件工作的默認(rèn)路徑 # os.system("rm -rf ceshi1.txt") # os.chdir("/home/wangwen/mywork") # os.system("rm -rf 2.txt") # os.system("mkdir ceshi222")#environ 獲取或修改環(huán)境變量 #(返回的是一個(gè)系統(tǒng)的字典 [是所有環(huán)境變量的字典] 其中PATH這個(gè)鍵所有對(duì)應(yīng)的值,是系統(tǒng)命令路徑) # 如果想要系統(tǒng)執(zhí)行你的命令,需要先從PATH環(huán)境變量當(dāng)中進(jìn)行查找,如果找到了直接執(zhí)行,找不到not found # os.system("wangwen")''' (1) 創(chuàng)建一個(gè)文件夾 在家目錄里,比如mywork (2) 創(chuàng)建一個(gè)文件,叫wangwen,里面用nano 編輯 寫ifconfig (3) 修改wangwen文件的權(quán)限 chmod 777 wangwen (4) sudo ./wangwen 執(zhí)行當(dāng)前腳本 (5) pycharm => os.system("wangwen") => 報(bào)錯(cuò) . 找不到 ,因?yàn)橄到y(tǒng)環(huán)境變量PATH當(dāng)中,沒有該路徑 (6) 利用os.environ 拼接一個(gè)新的路徑到PATH環(huán)境變量當(dāng)中,讓系統(tǒng)幫助我們找到對(duì)應(yīng)的路徑,從而執(zhí)行該命令 (7) os.environ['PATH'] += ":/home/wangwen/mywork" 把路徑用拼接的形式加到環(huán)境變量里 (8) os.system("wangwen") => 成功~ '''''' res = os.environ print(res)# 獲取PATH 這個(gè)環(huán)境變量所有的路徑 os.environ['PATH'] += ":/home/wangwen/mywork" os.system("wangwen") '''''' environ( {'PATH': '/home/wangwen/PycharmProjects/untitled/venv/bin :/home/wangwen/bin :/home/wangwen/.local/bin:/usr/local/sbin :/usr/local/bin :/usr/sbin :/usr/bin :/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'XAUTHORITY': '/home/wangwen/.Xauthority', 'XMODIFIERS': '@im=fcitx', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/ :/var/lib/snapd/desktop', 'GDMSESSION': 'ubuntu', 'MANDATORY_PATH': '/usr/share/gconf/ubuntu.mandatory.path', 'GTK_IM_MODULE': 'fcitx', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-oBOuAq0vFV', 'DEFAULTS_PATH': '/usr/share/gconf/ubuntu.default.path', 'PS1': '(venv) ', 'XDG_CURRENT_DESKTOP': 'Unity', 'UPSTART_SESSION': 'unix:abstract=/com/ubuntu/upstart-session/1000/1761', 'QT4_IM_MODULE': 'fcitx', 'QT_LINUX_ACCESSIBILITY_ALWAYS_ON': '1', 'LOGNAME': 'wangwen', 'JOB': 'unity-settings-daemon', 'PWD': '/mnt/hgfs/gongxiang_16/day16', 'IM_CONFIG_PHASE': '1', 'PYCHARM_HOSTED': '1', 'LANGUAGE': 'zh_CN:zh', 'PYTHONPATH': '/home/wangwen/PycharmProjects/untitled:/home/wangwen/mysoft/pycharm-2019.1.2/helpers/pycharm_matplotlib_backend:/home/wangwen/mysoft/pycharm-2019.1.2/helpers/pycharm_display', 'SHELL': '/bin/bash', 'GIO_LAUNCHED_DESKTOP_FILE': '/home/wangwen/.local/share/applications/jetbrains-pycharm.desktop', 'INSTANCE': '', 'GTK2_MODULES': 'overlay-scrollbar', 'UPSTART_INSTANCE': '', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'GTK_MODULES': 'gail:atk-bridge:unity-gtk-module', 'VIRTUAL_ENV': '/home/wangwen/PycharmProjects/untitled/venv', 'CLUTTER_IM_MODULE': 'xim', 'XDG_SESSION_PATH': '/org/freedesktop/DisplayManager/Session0', 'COMPIZ_BIN_PATH': '/usr/bin/', 'SESSIONTYPE': 'gnome-session', 'XDG_SESSION_DESKTOP': 'ubuntu', 'SHLVL': '0', 'COMPIZ_CONFIG_PROFILE': 'ubuntu', 'UPSTART_JOB': 'unity7', 'QT_IM_MODULE': 'fcitx', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'GNOME_KEYRING_CONTROL': '', 'LANG': 'zh_CN.UTF-8', 'XDG_SEAT_PATH': '/org/freedesktop/DisplayManager/Seat0', 'XDG_SESSION_TYPE': 'x11', 'XDG_SESSION_ID': 'c2', 'DISPLAY': ':0', 'PYCHARM_DISPLAY_PORT': '45245', 'GDM_LANG': 'zh_CN', 'PYTHONIOENCODING': 'UTF-8', 'XDG_GREETER_DATA_DIR': '/var/lib/lightdm-data/wangwen', 'UPSTART_EVENTS': 'xsession started', 'SESSION': 'ubuntu', 'GPG_AGENT_INFO': '/home/wangwen/.gnupg/S.gpg-agent:0:1', 'DESKTOP_SESSION': 'ubuntu', 'USER': 'wangwen', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '2358', 'QT_ACCESSIBILITY': '1', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'XDG_SEAT': 'seat0', 'PYTHONUNBUFFERED': '1', 'QT_QPA_PLATFORMTHEME': 'appmenu-qt5', 'XDG_RUNTIME_DIR': '/run/user/1000', 'XDG_VTNR': '7', 'HOME': '/home/wangwen', 'GNOME_KEYRING_PID': ''})''' # ###--os 模塊屬性 #name 獲取系統(tǒng)標(biāo)識(shí) linux,mac(UNIX) ->posix windows -> nt res = os.name print(res)#sep 獲取路徑分割符號(hào) linux,mac -> / window-> \ # 如果不確定系統(tǒng)是什么,用os.sep 來拼接路徑 res = os.sep print(res) # /home/wangwen/... windows C:\Drivers#linesep 獲取系統(tǒng)的換行符號(hào) linux,mac -> \n window->\r\n 或 \n res = os.linesep print(repr(res))?
?
?
2.time模塊
#time() 獲取本地時(shí)間戳
#mktime() 通過[時(shí)間元組]獲取[時(shí)間戳] (參數(shù)是時(shí)間元組)
#localtime() 通過[時(shí)間戳]獲取[時(shí)間元組] (默認(rèn)當(dāng)前時(shí)間)
#ctime() 通過[時(shí)間戳]獲取[時(shí)間字符串] (默認(rèn)當(dāng)前時(shí)間)
#asctime() 通過[時(shí)間元組]獲取[時(shí)間字符串](參數(shù)是時(shí)間元組)
#strftime() 通過[時(shí)間元組]格式化[時(shí)間字符串] (格式化字符串,[可選時(shí)間元組參數(shù)])
#strptime() 通過[時(shí)間字符串]提取出[時(shí)間元組] (時(shí)間字符串,格式化字符串)
#sleep() 程序睡眠等待
#perf_counter() 用于計(jì)算程序運(yùn)行的時(shí)間
?
# ### time 時(shí)間模塊 import time #time() 獲取本地時(shí)間戳 res = time.time() print(res) # 1559973224.3211205#mktime() 通過[時(shí)間元組]獲取[時(shí)間戳] (參數(shù)是時(shí)間元組) ttp = (2019,5,16,10,55,30,0,0,0) res = time.mktime(ttp) print(res) # 1557975330.0 #localtime() 通過[時(shí)間戳]獲取[時(shí)間元組] (默認(rèn)當(dāng)前時(shí)間) res = time.localtime() print(res) ''' time.struct_time ( tm_year=2019, tm_mon=5, tm_mday=16, tm_hour=10, tm_min=57, tm_sec=10, tm_wday=3, tm_yday=136, tm_isdst=0 ) '''#ctime() 通過[時(shí)間戳]獲取[時(shí)間字符串] (默認(rèn)當(dāng)前時(shí)間) res = time.ctime() print(res) # Sat Jun 8 13:53:44 2019 res = time.ctime(1557975330) print(res) # Thu May 16 10:55:30 2019#asctime() 通過[時(shí)間元組]獲取[時(shí)間字符串](參數(shù)是時(shí)間元組) ttp = (2019,5,1,3,3,3,2,0,0) res = time.asctime(ttp) print(res) # Wed May 1 03:03:03 2019 # asctime 內(nèi)部實(shí)現(xiàn)有個(gè)小bug,不能夠自動(dòng)識(shí)別是周幾,只能手動(dòng)填寫 # 優(yōu)化寫法 ttp = (2019,5,1,3,3,3,0,0,0) res = time.mktime(ttp) print(res) # 1556650983.0 res = time.ctime(res) print(res) # Wed May 1 03:03:03 2019#strftime() 通過[時(shí)間元組]格式化[時(shí)間字符串] (格式化字符串,[可選時(shí)間元組參數(shù)]) res = time.strftime("%Y=%m=%d %H|%M|%S") print(res) # 2019=06=08 13|53|44 ttp = (2019,5,1,3,3,3,0,0,0) res = time.strftime("%Y=%m=%d %H|%M|%S",ttp) print(res) # 2019=05=01 03|03|03#strptime() 通過[時(shí)間字符串]提取出[時(shí)間元組] (時(shí)間字符串,格式化字符串) # 注意點(diǎn):strptime 在匹配字符串當(dāng)中的時(shí)間時(shí),字符串必須嚴(yán)絲合縫,不能隨意修改原有字符. res = time.strptime("2019年5月17號(hào),5期同學(xué)會(huì)看著4期同學(xué)在早上8點(diǎn)9分20秒的時(shí)候去下野","%Y年%m月%d號(hào),5期同學(xué)會(huì)看著4期同學(xué)在早上%H點(diǎn)%M分%S秒的時(shí)候去下野") print(res) ''' time.struct_time( tm_year=2019, tm_mon=5, tm_mday=17, tm_hour=8, tm_min=9, tm_sec=20, tm_wday=4, tm_yday=137, tm_isdst=-1) ''' #sleep() 程序睡眠等待 # time.sleep(10) # 程序在此加阻塞,10秒之后載向下執(zhí)行 # print("我睡醒了")#perf_counter() 用于計(jì)算程序運(yùn)行的時(shí)間 # 用time.time() 一樣可以實(shí)現(xiàn) startime = time.perf_counter() print(startime) for i in range(1000000000):pass endtime = time.perf_counter() res = endtime - startime print(res) # 90.6656399714512?
?
?
3.random模
#random() 獲取隨機(jī)0-1之間的小數(shù)(左閉右開)
#randrange() 隨機(jī)獲取指定范圍內(nèi)的整數(shù)(包含開始值,不包含結(jié)束值,間隔值)
#randint() 隨機(jī)產(chǎn)生指定范圍內(nèi)的隨機(jī)整數(shù)
#uniform() 獲取指定范圍內(nèi)的隨機(jī)小數(shù)(左閉右開)
#choice() 隨機(jī)獲取序列中的值(多選一)
#sample() 隨機(jī)獲取序列中的值(多選多) [返回列表]
#shuffle() 隨機(jī)打亂序列中的值(直接打亂原序列)
?
4.math模塊
#ceil() 向上取整操作 (對(duì)比內(nèi)置round)
#floor() 向下取整操作 (對(duì)比內(nèi)置round)
#pow() 計(jì)算一個(gè)數(shù)值的N次方(結(jié)果為浮點(diǎn)數(shù)) (對(duì)比內(nèi)置pow)
#sqrt() 開平方運(yùn)算(結(jié)果浮點(diǎn)數(shù))
#fabs() 計(jì)算一個(gè)數(shù)值的絕對(duì)值 (結(jié)果浮點(diǎn)數(shù)) (對(duì)比內(nèi)置abs)
#modf() 將一個(gè)數(shù)值拆分為整數(shù)和小數(shù)兩部分組成元組
#copysign() 將參數(shù)第二個(gè)數(shù)值的正負(fù)號(hào)拷貝給第一個(gè)
#fsum() 將一個(gè)容器數(shù)據(jù)中的數(shù)據(jù)進(jìn)行求和運(yùn)算 (結(jié)果浮點(diǎn)數(shù))(對(duì)比內(nèi)置sum)
#圓周率常數(shù) pi
?
# ### math 數(shù)學(xué)模塊 import math #ceil() 向上取整操作 (對(duì)比內(nèi)置round) res = math.ceil(6.0001) # 注意精度損耗 print(res) # 7#floor() 向下取整操作 (對(duì)比內(nèi)置round) res = math.floor(3.5) print(res) res = math.floor(3.9999999) print(res) # 3 # 3 #pow() 計(jì)算一個(gè)數(shù)值的N次方(結(jié)果為浮點(diǎn)數(shù)) (對(duì)比內(nèi)置pow) res = math.pow(2,3) # res = math.pow(2,3,3) # math 模塊中的pow 只有2個(gè)參數(shù) print(res) # 8.0 # print(pow(2,3)) # print(pow(2,3,5)) #sqrt() 開平方運(yùn)算(結(jié)果浮點(diǎn)數(shù)) res = math.sqrt(9) print(res) # 3.0#fabs() 計(jì)算一個(gè)數(shù)值的絕對(duì)值 (結(jié)果浮點(diǎn)數(shù)) (對(duì)比內(nèi)置abs) res = math.fabs(-1) print(res) # 1.0 #modf() 將一個(gè)數(shù)值拆分為整數(shù)和小數(shù)兩部分組成元組 res = math.modf(14.9) print(res) # (0.9000000000000004, 14.0) #copysign() 將參數(shù)第二個(gè)數(shù)值的正負(fù)號(hào)拷貝給第一個(gè) res = math.copysign(-13,67) print(res) # 13.0 #fsum() 將一個(gè)容器數(shù)據(jù)中的數(shù)據(jù)進(jìn)行求和運(yùn)算 (結(jié)果浮點(diǎn)數(shù))(對(duì)比內(nèi)置sum) listvar = [234,242,4,2,42,42,4] res = math.fsum(listvar) print(res) # 570.0 #圓周率常數(shù) pi res = math.pi print(res) # 3.141592653589793?
?5.os.path
# ### os.path import os #abspath() 將相對(duì)路徑轉(zhuǎn)化為絕對(duì)路徑 *** res = os.path.abspath(".") print(res)#basename() 返回文件名部分 *** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.basename(pathvar) print(res)#dirname() 返回路徑部分 *** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.dirname(pathvar) print(res)#/mnt/hgfs/gongxiang_16/day16#split() 將路徑拆分成單獨(dú)的文件部分和路徑部分 組合成一個(gè)元組 *** res = os.path.split(pathvar) print(res)#join() 將多個(gè)路徑和文件組成新的路徑 可以自動(dòng)通過不同的系統(tǒng)加不同的斜杠 linux / windows\ ***** path1 = "home" path2 = "wangwen" path3 = "mywork" res = os.path.join(path1,path2,path3) print(res) # path1 + os.sep + path2 + os.sep + .......#splitext() 將路徑分割為后綴和其他部分 ** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.splitext(pathvar) print(res)#getsize() 獲取文件的大小 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.getsize(pathvar) print(res)#isdir() 檢測(cè)路徑是否是一個(gè)文件夾 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16" res = os.path.isdir(pathvar) print(res)#isfile() 檢測(cè)路徑是否是一個(gè)文件 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.isfile(pathvar) print(res)#islink() 檢測(cè)路徑數(shù)否是一個(gè)鏈接 *** pathvar = "/home/wangwen/ceshi1002/ceshi1001" res = os.path.islink(pathvar) print(res)#getctime() [windows]文件的創(chuàng)建時(shí)間,[linux]權(quán)限的改動(dòng)時(shí)間(返回時(shí)間戳) *** ''' # 驗(yàn)證linux 沒有創(chuàng)建時(shí)間 只有權(quán)限改動(dòng)時(shí)間 linux查看文件的狀態(tài):命令是 stat 1.txt (文件名) # os.chdir("/home/wangwen/mywork") # res = os.getcwd() # print(res) ''' pathvar = "/mnt/hgfs/gongxiang_16/day16/123ceshi.txt" res = os.path.getctime(pathvar) print(res)import time res = time.ctime(res) print(res)#getmtime() 獲取文件最后一次修改時(shí)間(返回時(shí)間戳) *** res = os.path.getmtime(pathvar) print(res)import time res = time.ctime(res) print(res)#getatime() 獲取文件最后一次訪問時(shí)間(返回時(shí)間戳) *** res = os.path.getatime(pathvar) print(res) import time res = time.ctime(res) print(res)#exists() 檢測(cè)指定的路徑是否存在 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16/123ceshi222.txt" res = os.path.exists(pathvar) print(res)#isabs() 檢測(cè)一個(gè)路徑是否是絕對(duì)路徑 ** pathvar = "." res = os.path.isabs(pathvar) print(res)# ### 計(jì)算任意文件夾的大小# ### 計(jì)算任意文件夾的大小import os ''' pathvar = "/mnt/hgfs/gongxiang_16/day17/ceshi100" lst = os.listdir(pathvar) print(lst)# 遍歷所有的文件和文件夾,計(jì)算文件的大小 size = 0 for i in lst:# print(i)path_new = os.path.join(pathvar,i)# print(path_new)if os.path.isdir(path_new):print(i,"是一個(gè)[目錄]")elif os.path.isfile(path_new):print(i,"是一個(gè)[文件]")size += os.path.getsize(path_new) print(size) # 2132 + 97 = 2229 '''# 使用遞歸來完成文件夾大小的計(jì)算 pathvar = "/mnt/hgfs/gongxiang_16/day17/ceshi100" def getallsize(pathvar):size = 0lst =os.listdir(pathvar)print(lst)for i in lst:print(i)# 拼接路徑 + 文件名 => 新路徑path_new = os.path.join(pathvar,i)if os.path.isdir(path_new):size += getallsize(path_new)'''size = size + getallsize(path_new)size = 2229 + getallsize(path_new)'''elif os.path.isfile(path_new):size += os.path.getsize(path_new)return size res = getallsize(pathvar) # print(res)# x 2229 + 1272 + 1283 = 4784
?
??
轉(zhuǎn)載于:https://www.cnblogs.com/longerandergou/p/10990611.html
總結(jié)
以上是生活随笔為你收集整理的Day16 os模块、time模块、random模、math模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【技巧】解决win10的1803版本下,
- 下一篇: 64位内核开发第五讲,调试与反调试