【python】模块-标准库(sys,os,math,random)

devtools/2024/9/25 21:18:40/

python的基础知识这个板块里,我们上一篇文章讲到了模块的基础知识,那今天我们接着上次的话题来聊聊python模块中标准库的知识。

上次我们讲到了模块和包,而python自己呢也提供了不少的包和模块,我们称这些东西叫做标准库。python的标准库是会随着python解释器一同安装到你的电脑当中

sys">sys

sys模块提供了很多函数和变量来处理python运行环境的不同部分

识别操作系统

import sysprint(sys.platform)

运行结果

win32

我的pc端呢是windows平台的,所以就输出’win32‘。如果是Linux的系统的话就是输出’linux‘,Cygwin的就是’cygwin‘,mac oc x的话就是’darwin‘

处理命令行参数

import sysprint(sys.argv[0])
d:\pythonDemo\python_basic\sys.py

我们通过在arvg指令后面加上一个[0],这样我们可以去查看一下当前文件的绝对路径

假如我们把文件放入C盘当中(我这里把文件放在了d盘里面),我们使用cmd,在cmd当中输入python sys.py hello nihao you

我们把把argv后面的[0]去掉

import sysprint(sys.argv)

我们就会得到这样的一个运行结果

['sys.py','hello','nihao','you']

它返回的是一个list,list的第一个是我们文件的名字,后面才是我们输入的指定参数内容。

我们在argv后面指定index后就可以去访问我们指定的位置了

退出程序

执行到主程序的末尾时,解释器会自动自觉地退出,但假设我们需要在半路退出,我们可以去调用sys.exit函数,它有一个可以选择的参数返回给调用它的程序,表示你可以在主程序当中捕获对sys.exit的调用。(0为正常退出,其它为异常)

import sysif len(sys.argv)<=1:print("缺少参数")sys.exit(1)
for arg in sys.argv:print(arg)
缺少参数

程序会在提示“缺少参数”后退出程序,如果我们带上参数运行程序,那么该程序会打印出所有的参数内容。

获取模块搜索路径

sys.path中储存了python结束其需要搜索的所有路径,并且我们可以通过修改该变量修改搜索模块的路径。

import sysfor path in sys.path:print(path)

不同的编译环境会有不同的结果

D:\pythonDemo>python -u "d:\pythonDemo\python_basic\sys.py"
d:\pythonDemo\python_basic
C:\Python37\python37.zip
C:\Python37\DLLs
C:\Python37\lib
C:\Python37
C:\Python37\lib\site-packages
C:\Python37\lib\site-packages\win32
C:\Python37\lib\site-packages\win32\lib
C:\Python37\lib\site-packages\Pythonwin

查找已导入的模块

sys.modules"是一个全局字典,该字典在python启动后就加载到内存当中。当我们导入新的模块时,“sys.modules"拥有字典所拥有的一切办法。当第二次导入该模块的时候,python会直接到字典中查找,从而加快程序的运行速度。"sys.modules"拥有字典的一切方法。

import sysprint(sys.modules.keys())
print(sys.modules.values())
print(sys.modules["os"])
D:\pythonDemo>python -u "d:\pythonDemo\python_basic\sys.py"
dict_keys(['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'mpl_toolkits', 'pywin32_bootstrap', 'pywin32_system32'])    
dict_values([<module 'sys' (built-in)>, <module 'builtins' (built-in)>, <module 'importlib._bootstrap' (frozen)>, <module '_imp' (built-in)>, <module '_thread' (built-in)>, <module '_warnings' (built-in)>, <module '_weakref' (built-in)>, <module 'zipimport' (built-in)>, <module 'importlib._bootstrap_external' (frozen)>, <module 'io' (built-in)>, <module 'marshal' (built-in)>, <module 'nt' (built-in)>, <module 'winreg' (built-in)>, <module 'encodings' from 'C:\\Python37\\lib\\encodings\\__init__.py'>, <module 'codecs' from 'C:\\Python37\\lib\\codecs.py'>, <module '_codecs' (built-in)>, <module 'encodings.aliases' from 'C:\\Python37\\lib\\encodings\\aliases.py'>, <module 'encodings.utf_8' from 'C:\\Python37\\lib\\encodings\\utf_8.py'>, <module '_signal' (built-in)>, <module '__main__' from 'd:\\pythonDemo\\python_basic\\sys.py'>, <module 'encodings.latin_1' from 'C:\\Python37\\lib\\encodings\\latin_1.py'>, <module 'io' from 'C:\\Python37\\lib\\io.py'>, <module 'abc' from 'C:\\Python37\\lib\\abc.py'>, <module '_abc' (built-in)>, <module 'site' from 'C:\\Python37\\lib\\site.py'>, <module 'os' from 'C:\\Python37\\lib\\os.py'>, <module 'stat' from 'C:\\Python37\\lib\\stat.py'>, <module '_stat' (built-in)>, <module 'ntpath' from 'C:\\Python37\\lib\\ntpath.py'>, <module 'genericpath' from 'C:\\Python37\\lib\\genericpath.py'>, <module 'ntpath' from 'C:\\Python37\\lib\\ntpath.py'>, <module '_collections_abc' from 'C:\\Python37\\lib\\_collections_abc.py'>, <module '_sitebuiltins' from 'C:\\Python37\\lib\\_sitebuiltins.py'>, <module '_bootlocale' from 'C:\\Python37\\lib\\_bootlocale.py'>, <module '_locale' (built-in)>, <module 'encodings.gbk' from 'C:\\Python37\\lib\\encodings\\gbk.py'>, <module '_codecs_cn' (built-in)>, <module '_multibytecodec' (built-in)>, <module 'types' from 'C:\\Python37\\lib\\types.py'>, <module 'importlib' from 'C:\\Python37\\lib\\importlib\\__init__.py'>, <module 'importlib._bootstrap' (frozen)>, <module 'importlib._bootstrap_external' (frozen)>, <module 'warnings' from 'C:\\Python37\\lib\\warnings.py'>, <module 'importlib.util' from 'C:\\Python37\\lib\\importlib\\util.py'>, <module 'importlib.abc' from 'C:\\Python37\\lib\\importlib\\abc.py'>, <module 'importlib.machinery' from 'C:\\Python37\\lib\\importlib\\machinery.py'>, <module 'contextlib' from 'C:\\Python37\\lib\\contextlib.py'>, <module 'collections' from 'C:\\Python37\\lib\\collections\\__init__.py'>, <module 'operator' from 'C:\\Python37\\lib\\operator.py'>, <module '_operator' (built-in)>, <module 'keyword' from 'C:\\Python37\\lib\\keyword.py'>, <module 'heapq' from 'C:\\Python37\\lib\\heapq.py'>, <module '_heapq' (built-in)>, <module 'itertools' (built-in)>, <module 'reprlib'_heapq' (built-in)>, <module 'itertools' (built-in)>, <module 'reprlib' from 'C:\\Python37\\lib\\reprlib.py'>, <module '_collections' (built-i from 'Cle '_functools' (built-in)>, <module 'mpl_toolkits' (namespace)>, <module 'pywin32_bootstrap' from 'C:\\Python37\\lib\\site-packages\\win32\\lib\\pywin32_bootstrap.py'>, <module 'pywin32_system32' (namespace)>])
<module 'os' from 'C:\\Python37\\lib\\os.py'>

不同的操作系统和不同的运行环境下可能会有不同的内容输出。

os">os

获取当前文件所在位置

__file__是一个python的内置函数

import osprint(__file__)
d:\pythonDemo\python_basic\os.py

 而os.path.dirname(__file__)是用来查找文件所在的文件夹的名字

import osprint(os.path.dirname(__file__))
d:\pythonDemo\python_basic

获取当前路径以及切换当前路径

import osprint(os.getcwd())
os.chdir("D:\\")
print(os.getcwd())

os.getcwd可以获取当前执行程序的路径,os.chdir可以切换当前的路径,这个例子中的路径对应的是windows平台,不同平台的指令会有所不同。

重命名文件

import osos.rename("a.text","b,txet")

这里用os.rename来将a.text更名为b.txet。

查看指定的路径是否存在

import osfolder=os.path.exists("c:\windows")
print(folder)

os.path.exists可以用来判断目录或者文件是否存在,如果存在的话就会返回”true“,否则的话就会返回”false“。我们这里是用folder来接住这个答案的。

判断给出的路径是否为一个文件

import osfolder=os.path.isfile("c:\windows\\nihao")
print(folder)

 用os.path.isfile来判断一下我们所给出的路径是否为一个文件。

判断给出的路径是否为一个目录

import osfolder=os.path.isdir("c:\windows\\nihao")
print(folder)

这里和刚刚类似,把file改为dir即可

math">math

两个常量

import math
print("圆周率:",math.pi)
print("自然常数:",math.e)
圆周率: 3.141592653589793
自然常数: 2.718281828459045

运算函数

向上取整

import math
print("1.7",math.ceil(1.7))
print("2.3",math.ceil(2.3))
print("-1.7",math.ceil(-1.7))
print("0",math.ceil(0))
1.7 2
2.3 3
-1.7 -1
0 0

向下取整

import math
print("1.7",math.floor(1.7))
print("2.3",math.floor(2.3))
print("-1.7",math.floor(-1.7))
print("0",math.floor(0))
1.7 1
2.3 2
-1.7 -2
0 0

指数运算

print("5^6",math.pow(5,6))
print("2^3",math.pow(2,3))
print("1^7",math.pow(1,7))
5^6 15625.0
2^3 8.0
1^7 1.0

 对数运算

import math
print("log(6)",math.log(6))
print("log(3)",math.log(3))
print("log(100,10)",math.log(100,10))
log(6) 1.791759469228055
log(3) 1.0986122886681098
log(100,10) 2.0

默认的底数为e,我们可以通过改变第二个参数来改变底数

平方根计算

import math
print("sqrt(6)",math.sqrt(6))
print("sqrt(3)",math.sqrt(3))
sqrt(6) 2.449489742783178
sqrt(3) 1.7320508075688772

三角函数

import math
print("sin(pi/2)",math.sin(math.pi/2))
print("cos(pi)",math.cos(math.pi))
print("tan(0)",math.tan(0))
sin(pi/2) 1.0
cos(pi) -1.0
tan(0) 0.0

角度和弧度的互换

import math
print(math.degrees(math.pi))
print(math.radians(90))
180.0
1.5707963267948966

这里使用degree将弧度转为角度,用radians来将角度转换弧度

random

random

我们随机生成一个数

import random
print(random.random())

跑两次

0.8565630734869731
0.6049675860697331

可以看到这是随便在0到1区间内生成一个浮点数。

uniform

我们也可以改变生成区间

import random
print(random.uniform(1,120))

我们让它在1到120内随机生成一个浮点数

16.254046609931038
48.70744018203168

randint 

我们要它生成一个整数

import random
print(random.randint(1,120))

choice 

在我们定义的序列当中获取一个随机元素

import randomseq1=(1,2,88,666,777,999,8,24,10)
seq2=["hello",'nihao','how are you','why so cruel','what can i say','man','mamba out','laker']
print(random.choice(seq1))
print(random.choice(seq2))

这里是随机生成的内容 

24
man8
mamba out10
what can i say

 shuffle

将列表打乱

import randomseq1=list(range(1,100))
seq2=["hello",'nihao','how are you','why so cruel','what can i say','man','mamba out','laker']
print("before")
print(seq1)
print(seq2)random.shuffle(seq1)
random.shuffle(seq2)print("now")
print(seq1)
print(seq2)
before
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
['hello', 'nihao', 'how are you', 'why so cruel', 'what can i say', 'man', 'mamba out', 'laker']
now
[59, 14, 36, 58, 21, 17, 40, 92, 51, 49, 16, 42, 46, 85, 78, 79, 54, 53, 57, 26, 63, 8, 45, 75, 71, 20, 7, 68, 22, 89, 43, 35, 31, 24, 97, 93, 99, 69, 34, 28, 67, 39, 19, 12, 95, 2, 82, 55, 29, 50, 48, 66, 32, 4, 23, 87, 88, 77, 52, 76, 5, 47, 13, 37, 98, 44, 15, 90, 3, 70, 96, 80, 18, 60, 41, 11, 64, 73, 86, 81, 61, 62, 91, 25, 1, 72, 65, 10, 33, 74, 83, 94, 9, 27, 30, 56, 38, 84, 6]
['mamba out', 'why so cruel', 'what can i say', 'laker', 'hello', 'man', 'nihao', 'how are you']

 !!!元组是不能作为random.shuffle的参数来使用


http://www.ppmy.cn/devtools/94484.html

相关文章

Sanic 长轮询实现股票行情实时更新

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

1、Unity【基础】3D数学

3D数学 文章目录 3D数学1、数学计算公共类Mathf1、Mathf和Math2、区别3、Mathf中的常用方法&#xff08;一般计算一次&#xff09;4、Mathf中的常用方法&#xff08;一般不停计算&#xff09;练习 A物体跟随B物体移动 2、三角函数1、角度和弧度2、三角函数3、反三角函数练习 物…

zabbix agent 配置

zabbix agent 配置&#xff1a; 修改配置文件&#xff1a;/etc/zabbix/zabbix_agentd.conf Serverzabbix_server_IP ServerActivezabbix_server_IP Hostnameagent_hostname

VUE3请求意外报跨越错误或者500错误问题

1.有可能是请求传参和传参类型写错了 首先要确保该请求接口是支持跨域的&#xff08;不支持叫后端改&#xff09; access-control-allow-headers:Content-Type, Accept, Access-Control-Allow-Origin, api_key, Authorization access-control-allow-methods:GET, POST, OPTIO…

[log4cplus]: 快速搭建分布式日志系统

关键词: 日志系统 、日志分类、自动分文件夹、按时间(月/周/日/小时/分)轮替 一、引言 这里我默认看此文的我的朋友们都已经具备一定的基础,所以,我们本篇不打算讲关于log4cplus的基础内容,文中如果涉及到没有吃透的点,需要朋友们动动自己聪明的脑袋和发财的手指,进一…

ECCV2024,清华百度提出ReSyncer:可实现音频同步嘴唇动作视频生成。

清华&百度等联合提出了ReSyncer&#xff0c;可以实现更高稳定性和质量的口型同步&#xff0c;而且还支持创建虚拟表演者所必需的各种有趣属性&#xff0c;包括快速个性化微调、视频驱动的口型同步、说话风格的转换&#xff0c;甚至换脸。 ReSyncer的工作原理可以简单理解为…

Github 2024-08-14 C开源项目日报Top10

根据Github Trendings的统计,今日(2024-08-14统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10Objective-C项目1PHP项目1Python项目1PHP:流行的Web开发脚本语言 创建周期:4710 天开发语言:C, PHP协议类型:OtherStar数量:37340 …

治理两个自动播放视频的应用:微信、浏览器

你的流量是否偷偷跑了&#xff1f; 首先&#xff0c;微信 发现页--在「搜一搜」界面点击右上角的「」&#xff0c;可以看到「搜一搜」的新增了「移动网络下视频自动播放」的开关。 关闭后&#xff0c;在手机连接移动网络的状态下&#xff0c;将不会再自动播放视频 此外&#…