【Python】干货分享丨从入门到编写POC之常用的标准库

Python从入门到编写POC系列文章原创的一套完整教程,想系统学习Python技能的小伙伴,不要错过哦!
在这里插入图片描述

常用的标准库

安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间,这里是一些常用标准库的简单说明。

Python的标准库包括了很多模块,从Python语言自身特定的类型和声明,到一些只用于少数程序的不著名模块,任何大型Python程序都有可能直接或间接地使用到这类模块的大部分内容。

sys模块

咱们之前已经接触过了sys模块,sys.path.append( ),可以通过help命令查看文档,然后不断的回车查看。

或者用这个命令:

>>> print sys.__doc__This module provides access to some objects used or maintained by theinterpreter and to functions that interact strongly with the interpreter.Dynamic objects:argv -- command line arguments; argv[0] is the script pathname if knownpath -- module search path; path[0] is the script directory, else ''modules -- dictionary of loaded modulesdisplayhook -- called to show results in an interactive sessionexcepthook -- called to handle any uncaught exception other than SystemExit  To customize printing in an interactive session or to install a custom  top-level exception handler, assign other functions to replace these.exitfunc -- if sys.exitfunc exists, this routine is called when Python exits  Assigning to sys.exitfunc is deprecated; use the atexit module instead.stdin -- standard input file object; used by raw_input() and input()stdout -- standard output file object; used by the print statementstderr -- standard error object; used for error messages  By assigning other file objects (or objects that behave like files)  to these, it is possible to redirect all of the interpreter's I/O.last_type -- type of last uncaught exceptionlast_value -- value of last uncaught exceptionlast_traceback -- traceback of last uncaught exception  These three are only available in an interactive session after a  traceback has been printed.exc_type -- type of exception currently being handledexc_value -- value of exception currently being handledexc_traceback -- traceback of exception currently being handled  The function exc_info() should be used instead of these three,  because it is thread-safe.Static objects:float_info -- a dict with information about the float inplementation.long_info -- a struct sequence with information about the long implementation.maxint -- the largest supported integer (the smallest is -maxint-1)maxsize -- the largest supported length of containers.maxunicode -- the largest supported characterbuiltin_module_names -- tuple of module names built into this interpreterversion -- the version of this interpreter as a stringversion_info -- version information as a named tuplehexversion -- version information encoded as a single integercopyright -- copyright notice pertaining to this interpreterplatform -- platform identifierexecutable -- absolute path of the executable binary of the Python interpreterprefix -- prefix used to find the Python libraryexec_prefix -- prefix used to find the machine-specific Python libraryfloat_repr_style -- string indicating the style of repr() output for floatsdllhandle -- [Windows only] integer handle of the Python DLLwinver -- [Windows only] version number of the Python DLL__stdin__ -- the original stdin; don't touch!__stdout__ -- the original stdout; don't touch!__stderr__ -- the original stderr; don't touch!__displayhook__ -- the original displayhook; don't touch!__excepthook__ -- the original excepthook; don't touch!Functions:displayhook() -- print an object to the screen, and save it in __builtin__._excepthook() -- print an exception and its traceback to sys.stderrexc_info() -- return thread-safe information about the current exceptionexc_clear() -- clear the exception state for the current threadexit() -- exit the interpreter by raising SystemExitgetdlopenflags() -- returns flags to be used for dlopen() callsgetprofile() -- get the global profiling functiongetrefcount() -- return the reference count for an object (plus one :-)getrecursionlimit() -- return the max recursion depth for the interpretergetsizeof() -- return the size of an object in bytesgettrace() -- get the global debug tracing functionsetcheckinterval() -- control how often the interpreter checks for eventssetdlopenflags() -- set the flags to be used for dlopen() callssetprofile() -- set the global profiling functionsetrecursionlimit() -- set the max recursion depth for the interpretersettrace() -- set the global debug tracing function

sys.argv是变量,命令行参数,专门向Python解释器传递参数他的功能是获取程序外部向程序传递的参数。

举个例子:

干货分享丨Python从入门到编写POC之常用的标准库

为了更好的理解,再写一个程序:

#coding = utf-8import sysdef demo():        if len(sys.argv) < 2:                print 'no action'                sys.exit()  #退出当前程序        for i in range(len(sys.argv)):                print 'arg['+str(i)+']',sys.argvif __name__ == '__main__':        demo()

干货分享丨Python从入门到编写POC之常用的标准库

sys.stdin,sys.stdout,sys.stderr,处理标准输入,标准输出,标准错误。

输出和错误是内建在每个unix系统中的管道,print的本质就是sys.stdout.write。

>>> for i in range(6):...     print "HELLO MOMO!"...HELLO MOMO!HELLO MOMO!HELLO MOMO!HELLO MOMO!HELLO MOMO!HELLO MOMO!>>> import sys>>> for i in range(6):...     sys.stdout.write("HELLO BaZong\n")...HELLO BaZongHELLO BaZongHELLO BaZongHELLO BaZongHELLO BaZongHELLO BaZong

stdout是一个类文件对象,调用了其write函数就可以打印任何的字符串了,它们不会添加回车,要自己添加\n,但是只有write的办法,没有read的方法。

还是由于是类文件对象,因此可以讲任何类文件赋值,然后重定向输出,那可能会问,啥是重定向输出,简而言之,就是将输出内容从"控制台"转到"文件"。

举个例子,进一步理解:

>>> import sys>>> print "HELLO BaZong"   #标准输出HELLO BaZong>>> demo = sys.stdout  #重定向之前保存demo>>> demo2 = open('test.txt','w')>>> sys.stdout = demo2   #之后的输出重定向到刚打开的test.txt>>> print "HELLO ichunqiu" #这句话只会输出打印到txtz文件中,屏幕看不到输出>>> demo2.close()>>> sys.stdout = demo   #将stdout恢复成原来的方式>>> demo3 = open('test.txt','r')>>> demo3.read()'HELLO ichunqiu\n'

最后为啥多了一个\n?

是因为print会在即将要打印的字符串后面加一个硬回车。

os模块

先看一下os模块里有什么内容:

>>> import os>>> dir(os)['F_OK', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'UserDict', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'curdir', 'defpath', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fstat', 'fsync', 'getcwd', 'getcwdu', 'getenv', 'getpid', 'isatty', 'kill', 'linesep', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'sys', 'system', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'umask', 'unlink', 'unsetenv', 'urandom', 'utime', 'waitpid', 'walk', 'write']

然后用help( )命令,这里介绍几个常用的:

>>> import os>>> os.name  #判断现在正在实用的平台,Windows平台"nt",linux平台"posix"'nt'>>> os.getcwd()   #获取当前目录'D:\\ichunqiu\\items'>>> os.listdir("D:/ichunqiu")['bsrc&ichunqiu', 'items', 'task']>>> import os>>> os.name  #判断现在正在实用的平台,Windows平台"nt",linux平台"posix"'nt'>>> os.getcwd()   #获取当前目录'D:\\ichunqiu\\items'>>> os.listdir("D:/ichunqiu")  #列D:/ichunqiu文件夹的目录['bsrc&ichunqiu', 'items', 'task']>>> os.mkdir("demo")  #在本文件x夹下建立一个叫demo的文件夹>>> os.listdir("D:/ichunqiu/items")  #查看目录有没有demo的文件夹['cmd.bat', 'ctf.py', 'demo', 'demo.py', 'flag.txt', 'ichunqiu', 'test.txt']>>> os.rmdir("demo") #删除叫demo的文件夹>>> os.listdir("D:/ichunqiu/items")  #查看文件夹,发现没有demo文件夹了['cmd.bat', 'ctf.py', 'demo.py', 'flag.txt', 'ichunqiu', 'test.txt']>>> os.rename("test.txt","test1.txt") #将test.txt重名为test1.txt>>> os.listdir("D:/ichunqiu/items")  #查看文件夹,发现test.txt改成了test1.txt['cmd.bat', 'ctf.py', 'demo.py', 'flag.txt', 'ichunqiu', 'test1.txt']>>> os.remove("test1.txt")  #删除test1.txt的文件>>> os.listdir("D:/ichunqiu/items")  #查看文件夹,发现没有了test1.txt['cmd.bat', 'ctf.py', 'demo.py', 'flag.txt', 'ichunqiu']

os库提供了在Python中使用操作系统的命令的方法就是用os.system()。

以下是Winods系统:

>>> command = 'dir'>>> import os>>> os.system(command)驱动器 D 中的卷没有标签。卷的序列号是 626B-88AAD:\ichunqiu\items 的目录2017/08/23 10:34 <DIR> .2017/08/23 10:34 <DIR> ..2017/08/15 21:42 7 cmd.bat2017/08/21 21:22 521 ctf.py2017/08/23 10:34 7,446 demo.py2017/08/21 12:05 23 flag.txt2017/08/20 18:08 <DIR> ichunqiu2017/08/22 22:38 16 test.txt5 个文件 8,013 字节3 个目录 353,137,557,504 可用字节0

干货分享丨Python从入门到编写POC之常用的标准库

time模块

time模块很常用的,比如说在延时注入中,就要用到它,可以精确的知道程序的运行长短。

>>> import time>>> time.time()   #获取当前时间的时间戳1503480040.985>>> time.clock()  #获取进程的时间60.641674890547975>>> time.localtime()  #时间戳转换成当地的时间time.struct_time(tm_year=2017, tm_mon=8, tm_mday=23, tm_hour=17, tm_min=20, tm_sec=48, tm_wday=2, tm_yday=235, tm_isdst=0)>>> time.asctime()  #将元祖表示为'Wed Aug 23 17:24:07 2017'这种形式'Wed Aug 23 17:24:27 2017'

json模块

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

Python标准库中有JSON模块,主要是两个功能,序列化(encoding)与反序列化(decoding)。

encoding操作:dumps( )

>>> import json>>> data = [{"username":"ichunqiu","password":"BaZong","content":("BaZong","handsome")}]>>> print data[{'username': 'ichunqiu', 'content': ('BaZong', 'handsome'), 'password': 'BaZong'}]>>> data_json = json.dumps(data)  #将data进行格式的编码转换>>> print data_json[{"username": "ichunqiu", "content": ["BaZong", "handsome"], "password": "BaZong"}]

这里的data_json是str类型,data是list类型。

decoding操作:loads( )

>>> import random>>> random.random()  #生成大于等于0,小于等于1的随机浮点数0.766691871394984>>> random.uniform(66,88)  #生成66到88之间的随机浮点数80.51121638510607>>> random.randint(66,88)  #生成66到88的整数88>>> random.choice('BaZong') #在BaZong生成随机字符'n'>>> demo = [1,2,3,4,5,6]>>> random.shuffle(demo)  #打乱数字>>> demo[1, 4, 3, 5, 2, 6]

hashlib模块

Python中的hashlib库提供了大量的摘要算法,又叫散列算法,哈希算法。

举个例子,计算一个md5值:

>>> import random>>> random.random()  #生成大于等于0,小于等于1的随机浮点数0.766691871394984>>> random.uniform(66,88)  #生成66到88之间的随机浮点数80.51121638510607>>> random.randint(66,88)  #生成66到88的整数88>>> random.choice('BaZong') #在BaZong生成随机字符'n'>>> demo = [1,2,3,4,5,6]>>> random.shuffle(demo)  #打乱数字>>> demo[1, 4, 3, 5, 2, 6]

random模块

生成随机数的

>>> import random>>> dir(random)['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hashlib', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> import random>>> random.random()  #生成大于等于0,小于等于1的随机浮点数0.766691871394984>>> random.uniform(66,88)  #生成66到88之间的随机浮点数80.51121638510607>>> random.randint(66,88)  #生成66到88的整数88>>> random.choice('BaZong') #在BaZong生成随机字符'n'>>> demo = [1,2,3,4,5,6]>>> random.shuffle(demo)  #打乱数字>>> demo[1, 4, 3, 5, 2, 6]

urllib/urlib2这两个模块,感兴趣的小伙伴可以在网上自学哦。

以上是今天要分享的内容,大家看懂了吗?

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方VX二维码免费领取学习资料【保证100%免费】
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.k8s:helm包管理器,prometheus监控,elk,k8s可视化

目录 一、Helm 包管理器 1.什么是 Helm 2.安装Helm &#xff08;3&#xff09;Helm常用命令 &#xff08;4&#xff09;目录结构 &#xff08;5&#xff09;使用Helm完成redis主从搭建 二、Prometheus集群监控 1.监控方案 2.Prometheus监控k8s 三、ELK日志搜集 1.el…

图片压缩30KB以下怎么做?建议试试这些方法

图片怎么压缩30KB以下&#xff1f;在数字时代&#xff0c;无论是网页设计、社交媒体分享还是电子邮件附件发送&#xff0c;图片的大小往往成为影响加载速度和用户体验的关键因素之一。特别是在需要上传图片到对文件大小有限制的平台时&#xff0c;如何有效地将图片压缩至30KB甚…

【多重循环在Java中的应用】

多重循环在Java中的应用 介绍 多重循环是将一个循环嵌套在另一个循环体内的编程结构。Java中的 for、while 和 do...while 循环均可作为外层循环和内层循环。建议使用两层嵌套&#xff0c;最多不超过三层&#xff0c;以保持代码的可读性。 在多重循环中&#xff0c;外层循环执…

【重学 MySQL】六十二、非空约束的使用

【重学 MySQL】六十二、非空约束的使用 定义目的关键字特点作用创建非空约束删除非空约束注意事项 在MySQL中&#xff0c;非空约束&#xff08;NOT NULL Constraint&#xff09;是一种用于确保表中某列不允许为空值的数据库约束。 定义 非空约束&#xff08;NOT NULL Constra…

ES postman操作全量修改,局部修改,删除

全量修改 修改需要调用的url 地址是http://192.168.1.108:9200/shopping/_doc/1001&#xff0c;调用方法使用put 只修改指定的需求的内容的请求方式 post方式就是局部修改 http://192.168.1.108:9200/shopping/_update/1001&#xff0c;请求方式post 上图是只修改id 为1001数…

Leetcode—416. 分割等和子集【中等】

2024每日刷题&#xff08;172&#xff09; Leetcode—416. 分割等和子集 C实现代码 class Solution { public:bool canPartition(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);if(sum % 2) {return false;}int m nums.size();int subSu…

leetcode68:文本左右对齐

给定一个单词数组 words 和一个长度 maxWidth &#xff0c;重新排版单词&#xff0c;使其成为每行恰好有 maxWidth 个字符&#xff0c;且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词&#xff1b;也就是说&#xff0c;尽可能多地往每行中放置单词。必要时可…

如何免费为域名申请一个企业邮箱

背景 做SEO的是有老是会有一些网站来做验证你的所有权&#xff0c;这个时候&#xff0c;如果你域名对应的企业邮箱就会很方便。zoho为了引导付费&#xff0c;有很多多余的步骤引导&#xff0c;反倒是让不付费的用户有些迷茫&#xff0c;所以会写这个教程&#xff0c;按照教程走…

2-116 基于matlab的主成分分析(PCA)及累积总和(CUSUM)算法故障监测

基于matlab的主成分分析&#xff08;PCA&#xff09;及累积总和&#xff08;CUSUM&#xff09;算法故障监测&#xff0c;针对传统的多元统计分析方法对生产过程中微小故障检测不灵敏的问题&#xff0c;使用基于主元分析的累积和的微小故障检测方法进行故障监测&#xff0c;通过…

栈与队列面试题(Java数据结构)

前言&#xff1a; 这里举两个典型的例子&#xff0c;实际上该类型的面试题是不确定的&#xff01; 用栈实现队列&#xff1a; 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;双栈 思路 将一个栈当作输入栈&#xff0c;用于压入 push 传入的数…

路由器的工作机制

在一个家庭或者一个公司中 路由器的作用主要有两个(①路由–决定了数据包从来源到目的地的路径 通过映射表决定 ②转送–通过路由器知道了映射表 就可以将数据包从路由器的输入端转移给合适的输出端) 我们可以画一张图来分析一下&#xff1a; 我们好好来解析一下这张图&#x…

胤娲科技:AI重塑会议——灵动未来,会议新纪元

你是否曾经历过这样的会议场景&#xff1a;会议纪要不准确&#xff0c;人名张冠李戴&#xff1b;错过会议&#xff0c;却无从回顾关键内容&#xff1b;会议效率低下&#xff0c;时间白白流逝&#xff1f; 这些问题仿佛成了现代会议的“顽疾”。然而&#xff0c;随着AI技术的飞速…

Pywinauto,一款 Win 自动化利器!

1.安装 pywinauto是一个用于自动化Python模块&#xff0c;适合Windows系统的软件&#xff08;GUI&#xff09;&#xff0c;可以通过Pywinauto遍历窗口&#xff08;对话框&#xff09;和窗口里的控件&#xff0c;也可以控制鼠标和键盘输入&#xff0c;所以它能做的事情比之前介…

论文速读:基于渐进式转移的无监督域自适应舰船检测

这篇文章的标题是《Unsupervised Domain Adaptation Based on Progressive Transfer for Ship Detection: From Optical to SAR Images》基于渐进式转移的无监督域自适应舰船检测:从光学图像到SAR图像&#xff0c;作者是Yu Shi等人。文章发表在IEEE Transactions on Geoscience…

ARTS Week 43

Algorithm 本周的算法题为 1822. 数组元素积的符号 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。 如果 x 是负数&#xff0c;返回 -1 。 如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数…

《神经网络》—— 循环神经网络RNN(Recurrent Neural Network)

文章目录 一、RNN 简单介绍二、RNN 基本结构1.隐藏中的计算2.输出层的计算3.循环 三、RNN 优缺点1.优点2.缺点 一、RNN 简单介绍 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一种用于处理序列数据的神经网络架构。 与传统的前馈神经网络&#xff08…

现代身份和访问管理 IAM 如何降低风险

您的公司是否仍在使用 1998 年时的身份管理系统&#xff1f;仅凭用户名和密码就能登录本地网络并访问几乎所有资源吗&#xff1f; 虽然大多数企业已经转向现代身份和访问管理(IAM) 平台&#xff0c;但成千上万的企业和其他组织仍然依赖过时的用户名/密码系统。 如果你看一下传…

微知-如何临时设置Linux系统时间?(date -s “2024-10-08 22:55:00“, time, hwclock, timedatectl)

背景 在tar解压包的时候经常出现时间不对&#xff0c;可以临时用date命令修改一下&#xff0c;也可以其他&#xff0c;本文主要介绍临时修改的方法 date命令修改 sudo date -s "2024-10-08 22:55:00"其他查看和修改的命令 本文只记录查看方式&#xff0c;修改的暂…

分享几个国外SSL证书提供商网站

国外SSL证书提供商 众所周知兼容性高的SSL证书肯定是在国外申请的&#xff0c;主要确保SSL证书的安全性的同时&#xff0c;对于安全标准在国外相比而言更成熟&#xff0c;保护程度也比较高。 另方面对需要申请的域名没有限制&#xff0c;可选性SSL证书类型种类比较多&#xf…

【C++打怪之路Lv7】-- 模板初阶

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文(平均质量分82)&#…