龙空技术网

Python代码的“插件”——模块系列(二)

腾科IT教育 239

前言:

现在各位老铁们对“python中的sys模块中什么来获取命令行参数类型”大概比较讲究,兄弟们都想要知道一些“python中的sys模块中什么来获取命令行参数类型”的相关文章。那么小编也在网上网罗了一些有关“python中的sys模块中什么来获取命令行参数类型””的相关文章,希望同学们能喜欢,你们快快来学习一下吧!

1、Random模块

random是内建(built-in)函数,作用是产生随机数。

首先导入random模块,然后就可以开始调用其下所包含的函数,使用 dir(random)可以查看random模块下有哪些函数,结果如下:

import randomdir(random)#['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence#', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect#', '_ceil', '_cos', '_e', '_exp', '_inst', '_itertools', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom'#, '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate',#'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvaria#te']

我们来讲解一下random中经常调用的一些函数

*random.random()

生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。

import randomprint(random.random()) #大于0且小于1之间的小数#0.516046835093513

*random.uniform(a,b)

生成a、b之间的随机浮点数。不过与randint不同的是,a、b可以不是整数,也不用考虑大小。

print(random.uniform(1,3))#大于1小于3的小数#2.9022582829640955

*random.choice(n)

从序列中随机选取一个元素。n需要是一个序列,比如list、元组、字符串。

print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5]#[4, 5]

*random.sample(p, k)

从p序列中,随机获取k个元素,生成一个新序列。sample不改变原来序列。

这个模块还支持三角、β分布、指数分布、伽马分布、高斯分布等等非常专业的随机算法的哦。

print(random.sample([1,"23",[4,5]],2))#列表元素任意2个组合#[1, '23']

*random.shuffle(x)

把序列x中的元素顺序打乱。shuffle直接改变原有的序列。

item=[1,3,5,7,9]random.shuffle(item) #打乱item的顺序,相当于"洗牌"print(item)#[7, 3, 1, 9, 5]

2、OS模块

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径

os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd

os.curdir 返回当前目录: ('.')

os.pardir 获取当前目录的父目录字符串名:('..')

os.makedirs('dirname1/dirname2') 可生成多层递归目录

os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname

os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

os.remove() 删除一个文件

os.rename("oldname","newname") 重命名文件/目录

os.stat('path/filename') 获取文件/目录信息

os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:

os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'os.system("bash command") 运行shell命令,直接显示

os.environ 获取系统环境变量

os.path.abspath(path) 返回path规范化的绝对路径

os.path.split(path) 将path分割成目录和文件名二元组返回

os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素

os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) 如果path是绝对路径,返回True

os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False

os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False

os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间

os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

os.path.getsize(path) 返回path的大小

来看看示例:

import os

print(os.getcwd())

#D:\资料夹\python\untitled

3、SYS模块

sys.argv 命令行参数List,第一个元素是程序本身路径

sys.exit(n) 退出程序,正常退出时exit(0)

sys.version 获取Python解释程序的版本信息

sys.maxint 最大的Int值

sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform 返回操作系统平台名称

import sysprint(sys.version)#3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]获取Python版本信息

4、json

JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

Json模块提供了四个功能:dumps、dump、loads、load

import jsondic = {"k1":"v1","k2":"v2","k3":"v3"}str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串print(type(str_dic),str_dic) #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}#注意,json转换完的字符串类型的字典中的字符串是由""表示的dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示print(type(dic2),dic2) #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}list_dic = [1,["a","b","c"],3,{"k1":"v1","k2":"v2"}]str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]list_dic2 = json.loads(str_dic)print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]<class 'str'> {"k1": "v1", "k2": "v2", "k3": "v3"}<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
import jsonf = open("json_file","w")dic = {"k1":"v1","k2":"v2","k3":"v3"}json.dump(dic,f) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件f.close()f = open("json_file")dic2 = json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回f.close()print(type(dic2),dic2)#<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}

5、pickle

Python提供的pickle模块可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作。

注意:Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

import pickledic = {"name": "alvin", "age": 23,"sex":"male"}print(type(dic)) # <class 'dict'>j = pickle.dumps(dic)print(type(j)) # <class 'bytes'>f = open("序列化对象_pickle","wb") # 注意是w是写入str,wb是写入bytes,j是'bytes'f.write(j) # -------------------等价于pickle.dump(dic,f)f.close()# -------------------------反序列化import picklef = open("序列化对象_pickle","rb")data = pickle.loads(f.read()) # 等价于data=pickle.load(f)print(data["age"])#<class 'dict'>#<class 'bytes'>#23

标签: #python中的sys模块中什么来获取命令行参数类型