Day16 os模块、time模块、random模、math模块
1.os模塊-對系統就行操作
#system() 在python中執行系統命令
#popen() 執行系統命令返回對象,通過read方法讀出字符串
#listdir() 獲取指定文件夾中所有內容的名稱列表
#getcwd() 獲取當前文件所在的默認路徑
#chdir() 修改當前文件工作的默認路徑
#environ 獲取或修改環境變量
#--os 模塊屬性
#name 獲取系統標識 linux,mac ->posix windows -> nt
#sep 獲取路徑分割符號 linux,mac -> / window-> \
#linesep 獲取系統的換行符號 linux,mac -> \n window->\r\n 或 \n
?
# ### os 對系統進行操作 import os #system() 在python中執行系統命令 # os.system("touch ceshi1.txt") #linux # os.system("ifconfig") # os.system("mspaint") # windows # os.system("ipconfig")#popen() 執行系統命令返回對象,通過read方法讀出字符串 # 使用popen 來解決windows 亂碼的bug ''' obj = os.popen("ipconfig") print(obj) res = obj.read() print(res) ''' #listdir() 獲取指定文件夾中所有內容的名稱列表 # 相對路徑 res = os.listdir(".") print(res) res = os.listdir("./ceshi100") print(res) # 絕對路徑 (以 / 開頭) # res = os.listdir("/mnt/hgfs/gongxiang_16/day16") # print(res)#getcwd() 獲取當前文件所在的默認路徑 res = os.getcwd() print(res) # __file__ 魔術屬性 : 獲取當前文件的完整路徑 print(__file__)#chdir() 修改當前文件工作的默認路徑 # os.system("rm -rf ceshi1.txt") # os.chdir("/home/wangwen/mywork") # os.system("rm -rf 2.txt") # os.system("mkdir ceshi222")#environ 獲取或修改環境變量 #(返回的是一個系統的字典 [是所有環境變量的字典] 其中PATH這個鍵所有對應的值,是系統命令路徑) # 如果想要系統執行你的命令,需要先從PATH環境變量當中進行查找,如果找到了直接執行,找不到not found # os.system("wangwen")''' (1) 創建一個文件夾 在家目錄里,比如mywork (2) 創建一個文件,叫wangwen,里面用nano 編輯 寫ifconfig (3) 修改wangwen文件的權限 chmod 777 wangwen (4) sudo ./wangwen 執行當前腳本 (5) pycharm => os.system("wangwen") => 報錯 . 找不到 ,因為系統環境變量PATH當中,沒有該路徑 (6) 利用os.environ 拼接一個新的路徑到PATH環境變量當中,讓系統幫助我們找到對應的路徑,從而執行該命令 (7) os.environ['PATH'] += ":/home/wangwen/mywork" 把路徑用拼接的形式加到環境變量里 (8) os.system("wangwen") => 成功~ '''''' res = os.environ print(res)# 獲取PATH 這個環境變量所有的路徑 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 獲取系統標識 linux,mac(UNIX) ->posix windows -> nt res = os.name print(res)#sep 獲取路徑分割符號 linux,mac -> / window-> \ # 如果不確定系統是什么,用os.sep 來拼接路徑 res = os.sep print(res) # /home/wangwen/... windows C:\Drivers#linesep 獲取系統的換行符號 linux,mac -> \n window->\r\n 或 \n res = os.linesep print(repr(res))?
?
?
2.time模塊
#time() 獲取本地時間戳
#mktime() 通過[時間元組]獲取[時間戳] (參數是時間元組)
#localtime() 通過[時間戳]獲取[時間元組] (默認當前時間)
#ctime() 通過[時間戳]獲取[時間字符串] (默認當前時間)
#asctime() 通過[時間元組]獲取[時間字符串](參數是時間元組)
#strftime() 通過[時間元組]格式化[時間字符串] (格式化字符串,[可選時間元組參數])
#strptime() 通過[時間字符串]提取出[時間元組] (時間字符串,格式化字符串)
#sleep() 程序睡眠等待
#perf_counter() 用于計算程序運行的時間
?
# ### time 時間模塊 import time #time() 獲取本地時間戳 res = time.time() print(res) # 1559973224.3211205#mktime() 通過[時間元組]獲取[時間戳] (參數是時間元組) ttp = (2019,5,16,10,55,30,0,0,0) res = time.mktime(ttp) print(res) # 1557975330.0 #localtime() 通過[時間戳]獲取[時間元組] (默認當前時間) 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() 通過[時間戳]獲取[時間字符串] (默認當前時間) 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() 通過[時間元組]獲取[時間字符串](參數是時間元組) ttp = (2019,5,1,3,3,3,2,0,0) res = time.asctime(ttp) print(res) # Wed May 1 03:03:03 2019 # asctime 內部實現有個小bug,不能夠自動識別是周幾,只能手動填寫 # 優化寫法 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() 通過[時間元組]格式化[時間字符串] (格式化字符串,[可選時間元組參數]) 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() 通過[時間字符串]提取出[時間元組] (時間字符串,格式化字符串) # 注意點:strptime 在匹配字符串當中的時間時,字符串必須嚴絲合縫,不能隨意修改原有字符. res = time.strptime("2019年5月17號,5期同學會看著4期同學在早上8點9分20秒的時候去下野","%Y年%m月%d號,5期同學會看著4期同學在早上%H點%M分%S秒的時候去下野") 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秒之后載向下執行 # print("我睡醒了")#perf_counter() 用于計算程序運行的時間 # 用time.time() 一樣可以實現 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() 獲取隨機0-1之間的小數(左閉右開)
#randrange() 隨機獲取指定范圍內的整數(包含開始值,不包含結束值,間隔值)
#randint() 隨機產生指定范圍內的隨機整數
#uniform() 獲取指定范圍內的隨機小數(左閉右開)
#choice() 隨機獲取序列中的值(多選一)
#sample() 隨機獲取序列中的值(多選多) [返回列表]
#shuffle() 隨機打亂序列中的值(直接打亂原序列)
?
4.math模塊
#ceil() 向上取整操作 (對比內置round)
#floor() 向下取整操作 (對比內置round)
#pow() 計算一個數值的N次方(結果為浮點數) (對比內置pow)
#sqrt() 開平方運算(結果浮點數)
#fabs() 計算一個數值的絕對值 (結果浮點數) (對比內置abs)
#modf() 將一個數值拆分為整數和小數兩部分組成元組
#copysign() 將參數第二個數值的正負號拷貝給第一個
#fsum() 將一個容器數據中的數據進行求和運算 (結果浮點數)(對比內置sum)
#圓周率常數 pi
?
# ### math 數學模塊 import math #ceil() 向上取整操作 (對比內置round) res = math.ceil(6.0001) # 注意精度損耗 print(res) # 7#floor() 向下取整操作 (對比內置round) res = math.floor(3.5) print(res) res = math.floor(3.9999999) print(res) # 3 # 3 #pow() 計算一個數值的N次方(結果為浮點數) (對比內置pow) res = math.pow(2,3) # res = math.pow(2,3,3) # math 模塊中的pow 只有2個參數 print(res) # 8.0 # print(pow(2,3)) # print(pow(2,3,5)) #sqrt() 開平方運算(結果浮點數) res = math.sqrt(9) print(res) # 3.0#fabs() 計算一個數值的絕對值 (結果浮點數) (對比內置abs) res = math.fabs(-1) print(res) # 1.0 #modf() 將一個數值拆分為整數和小數兩部分組成元組 res = math.modf(14.9) print(res) # (0.9000000000000004, 14.0) #copysign() 將參數第二個數值的正負號拷貝給第一個 res = math.copysign(-13,67) print(res) # 13.0 #fsum() 將一個容器數據中的數據進行求和運算 (結果浮點數)(對比內置sum) listvar = [234,242,4,2,42,42,4] res = math.fsum(listvar) print(res) # 570.0 #圓周率常數 pi res = math.pi print(res) # 3.141592653589793?
?5.os.path
# ### os.path import os #abspath() 將相對路徑轉化為絕對路徑 *** 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() 將路徑拆分成單獨的文件部分和路徑部分 組合成一個元組 *** res = os.path.split(pathvar) print(res)#join() 將多個路徑和文件組成新的路徑 可以自動通過不同的系統加不同的斜杠 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() 檢測路徑是否是一個文件夾 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16" res = os.path.isdir(pathvar) print(res)#isfile() 檢測路徑是否是一個文件 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16/2.py" res = os.path.isfile(pathvar) print(res)#islink() 檢測路徑數否是一個鏈接 *** pathvar = "/home/wangwen/ceshi1002/ceshi1001" res = os.path.islink(pathvar) print(res)#getctime() [windows]文件的創建時間,[linux]權限的改動時間(返回時間戳) *** ''' # 驗證linux 沒有創建時間 只有權限改動時間 linux查看文件的狀態:命令是 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() 獲取文件最后一次修改時間(返回時間戳) *** res = os.path.getmtime(pathvar) print(res)import time res = time.ctime(res) print(res)#getatime() 獲取文件最后一次訪問時間(返回時間戳) *** res = os.path.getatime(pathvar) print(res) import time res = time.ctime(res) print(res)#exists() 檢測指定的路徑是否存在 ***** pathvar = "/mnt/hgfs/gongxiang_16/day16/123ceshi222.txt" res = os.path.exists(pathvar) print(res)#isabs() 檢測一個路徑是否是絕對路徑 ** pathvar = "." res = os.path.isabs(pathvar) print(res)# ### 計算任意文件夾的大小# ### 計算任意文件夾的大小import os ''' pathvar = "/mnt/hgfs/gongxiang_16/day17/ceshi100" lst = os.listdir(pathvar) print(lst)# 遍歷所有的文件和文件夾,計算文件的大小 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,"是一個[目錄]")elif os.path.isfile(path_new):print(i,"是一個[文件]")size += os.path.getsize(path_new) print(size) # 2132 + 97 = 2229 '''# 使用遞歸來完成文件夾大小的計算 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
?
??
轉載于:https://www.cnblogs.com/longerandergou/p/10990611.html
總結
以上是生活随笔為你收集整理的Day16 os模块、time模块、random模、math模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【技巧】解决win10的1803版本下,
- 下一篇: 64位内核开发第五讲,调试与反调试