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() 随机打乱序列中的值(直接打乱原序列)
# ### random 随机模块 import random #random() 获取随机0-1之间的小数(左闭右开) res = random.random() # 0<= x < 1 print(res) # 0.2317205285049735#randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) res = random.randrange(2) # 0,1 print(res) # 1 res = random.randrange(1,6) # 1,2,3,4,5 print(res) # 4 res = random.randrange(1,7,3) # 1 4 print(res) # 1#randint() 随机产生指定范围内的随机整数 # randint 目前是唯一一个高位值可以去得到的函数 (不推荐使用) res = random.randint(1,2) print(res) # res = random.randint(2,6,2) # 没有间隔值参数 功能不如randrange # print(res)#uniform() 获取指定范围内的随机小数(左闭右开) res = random.uniform(2,4) # 2<=x < 4 print(res) # 2.0505468622018808 res = random.uniform(4,-2) print(res)''' a = 4 , b = -2 return a + (b-a) * self.random()4+(-2-4) * (0~1) 4+-6*(0~1) => 当取0时 4 4+-6*(0~1) => 当取1时 -2 (1是取不到的) 所以: -2 < x <=4 '''#choice() 随机获取序列中的值(多选一) listvar = ["周杰伦","王文","周润发","周星驰"] res = random.choice(listvar) print(res) # 周杰伦 # 自定义choice def mychoice():num = random.randrange(0,len(listvar))res = listvar[num]return resprint(mychoice()) # 周星驰#sample() 随机获取序列中的值(多选多) [返回列表] listvar = ["周杰伦","王文","周润发","周星驰"] res = random.sample(listvar,2) print(res) # ['周润发', '周杰伦'] #shuffle() 随机打乱序列中的值(直接打乱原序列) listvar = ["周杰伦","王文","周润发","周星驰"] random.shuffle(listvar) print(listvar) # ['周星驰', '王文', '周杰伦', '周润发'] # 随机4位验证码 def yanzhengma():strvar = ""for i in range(4):# 产生大写字母A~Zbchr = chr(random.randrange(65,91))# 产生小写字母a~zschr = chr(random.randrange(97,123))# 数字0~9num = str(random.randrange(0,10))# 把所有随机值得种类塞到列表里listvar = [bchr,schr,num]# 随机选取一个res = random.choice(listvar)# 拼接字符串strvar += res# 返回字符串return strvar res = yanzhengma() print(res)# dbO4
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模块相关推荐
- python基础——logging、OS、sys、random、string模块(0424)
2019独角兽企业重金招聘Python工程师标准>>> 一.日志记录模块 logging logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等 ...
- Python math 模块与 cmath 模块
Python math 模块提供了许多对浮点数的数学运算函数. Python cmath 模块包含了一些用于复数运算的函数. cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath ...
- Python中math模块的使用
Python中math模块的使用 Python 的 math 模块实现了许多数学运算函数. 这些函数大部分的返回结果是浮点数,在代码中,浮点数小数点后面的位数是有限的,而二进制表示小数时很有可能会出现 ...
- 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(五)——模幂模块(抵抗侧信道攻击)模块的设计实现方案
基于Montgomery算法的高速.可配置RSA密码IP核硬件设计系列(五) 2.2 模幂模块设计(抵抗测信道攻击模块) 2.2.1 模幂模块及内部模块的功能 2.2.3 模幂各模块的实现方案 2.2 ...
- C语言大数阶乘取余,python中math模块常用函数介绍 取模(取余)取绝对值 求阶乘 求最大公约数最小公倍数 取对数 取根号 取幂(取次方) 取整函数 三角函数与反三角函数...
前提:import math 两个常用常量 e = 2.718281828459045 pi = 3.141592653589793 >>> import math >> ...
- Python基础笔记_Day04_数据类型、math模块、random模块、string模块
Day04_数据类型.math模块.random模块.string模块 04.01_Python语言基础(Python中的数据类型)(了解) 04.02_Python语言基础(Num数据类型)(掌握) ...
- math库是python语言的数学模块_Python入门-函数库(模块)
内建函数和异常 定义内建函数(例如 len,int, range ...)的 _ _builtin_ _ 模块, 以及定义所有内建异常的 exceptions模块. Python 在启动时导入这两个模 ...
- python复数计算符号_Python:基本运算、基本函数(包括复数)、Math模块、NumPy模块...
基本运算 x**2 : x^2 若x是mat矩阵,那就表示x内每个元素求平方 inf:表示正无穷 逻辑运算符:and,or,not 基本函数 字典的get方法 a.get(k,d)11 get相当于一 ...
- python中math模块函数_Python常用的一些内建函数和math模块函数
一:Python内建函数 1 #abs取绝对值 2 num = -10 3 print(abs(num))4 5 #max 求最大值 6 print(max(6, 9, 2, 12, 8))7 8 # ...
最新文章
- BZOJ-1878: [SDOI2009]HH的项链(莫队算法)
- Windows 编译cython nms
- 读《编程珠玑》 (三)
- TCP/IP总结(4)TCP之4次挥手
- CC++——基本说明
- GitHub政府用户破万:开源成重塑政府新手段
- MapReduce-多个Mapper
- html5在zigbee中起什么作用,ZigBee是什么?ZigBee在智能家居中扮演什么角色
- 以太坊2.0客户端Lighthouse发布v1.3.0版本,为高优先级建议立即更新
- Kotlin Android Studio 环境搭建
- hdu 1811 Rank of Tetris 并查集+拓扑排序
- Spotfire 对 列 数据进行自定义排序
- 横河涡街流量计安装参数说明及要求
- 简单好听的id_好听的吃鸡id女生两个字
- 怎么录制明日之后游戏视频
- element date-picker range类型时间选择器 限制选中前后7天的时间的方法
- matlab里面nargin,Matlab中的nargin命令
- Linux WWW 服务器
- [机器学习][1]--PLA算法
- java毕业设计——基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码)——网上购书系统
热门文章
- 数据库连接池——C3P0:数据库连接池技术
- 字节流练习:图片复制
- java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法
- Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
- Python 操作Word文档插入图片和表格实例演示
- Windows 技巧篇-通过“控制面板-程序和附件“查看程序安装位置实例演示
- ARM--MDK5 Software Packs下载
- 【plt显示Tensor转出来的array时的报错】TypeError: Invalid dimensions for image data
- 高精度数取余(C\C++)
- LeetCode:2. Add Two Numbers