- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章C站最全Python标准库总结,你想要的都在这里由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
python标准库思维导图:
os模块提供了不少与操作系统相关联的函数.
1
2
3
4
5
6
|
>>>
import
os
>>> os.getcwd()
# 返回当前的工作目录
'C:\\Python34'
>>> os.chdir(
'/server/accesslogs'
)
# 修改当前的工作目录
>>> os.system(
'mkdir today'
)
# 执行系统命令 mkdir
0
|
建议使用 "import os" 风格而非 "from os import *"。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open().
序号 | 方法 | 功能 |
1 | os.access(path, mode) | 检验权限模式 |
2 | os.chdir(path) | 改变当前工作目录 |
3 | os.chflags(path, flags) | 设置路径的标记为数字标记。 |
4 | os.chmod(path, mode) | 更改权限 |
5 | os.chown(path, uid, gid) | 更改文件所有者 |
6 | os.chroot(path) | 改变当前进程的根目录 |
7 | os.close(fd) | 关闭文件描述符 fd |
8 | os.closerange(fd_low, fd_high) | 关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略 |
9 | os.dup(fd) | 复制文件描述符 fd |
10 | os.dup2(fd, fd2) | 将一个文件描述符 fd 复制到另一个 fd2 |
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表
1
2
3
|
>>>
import
glob
>>> glob.glob(
'*.py'
)
[
'primes.py'
,
'random.py'
,
'quote.py'
]
|
通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量.
sys.argv 。
可以用sys.argv获取当前正在执行的命令行参数的参数列表(list).
变量解释 。
sys.argv[0]当前程序名 。
sys.argv[1]第一个参数 。
sys.argv[2]第二个参数 。
len(sys.argv)-1 参数个数(减去文件名) 。
例如在命令行中执行 "python demo.py one two three" 后可以得到以下输出结果
1
2
3
|
>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']
|
re模块为高级字符串处理提供了正则表达式工具。可以说是爬虫必备,对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试
1
2
|
>>>
'tea for too'
.replace(
'too'
,
'two'
)
'tea for two'
|
re.match函数 。
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.
函数语法:
1
|
re.match(pattern, string, flags=0)
|
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串。 |
flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 |
匹配成功re.match方法返回一个匹配的对象,否则返回None.
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式.
匹配对象方法 描述group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号.
math模块为浮点运算提供了对底层C函数库的访问
1
2
3
4
5
|
>>>
import
math
>>> math.cos(math.pi
/
4
)
0.70710678118654757
>>> math.log(
1024
,
2
)
10.0
|
在实际工作中,math标准库往往无法满足需求,我还需要扩展库:NumPy 。
NumPy(Numerical Python) 支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib
1
2
|
import
smtplib
smtpObj
=
smtplib.SMTP( [host [, port [, local_hostname]]] )
|
参数说明:
host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数.
port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25.
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可.
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
1
|
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
|
参数说明:
from_addr: 邮件发送者地址.
to_addrs: 字符串列表,邮件发送地址.
msg: 发送消息 。
案例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import
smtplib
from
email.mime.text
import
MIMEText
from
email.header
import
Header
sender
=
'from@runoob.com'
receivers
=
[
'429240967@qq.com'
]
# 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message
=
MIMEText(
'Python 邮件发送测试...'
,
'plain'
,
'utf-8'
)
message[
'From'
]
=
Header(
"菜鸟教程"
,
'utf-8'
)
# 发送者
message[
'To'
]
=
Header(
"测试"
,
'utf-8'
)
# 接收者
subject
=
'Python SMTP 邮件测试'
message[
'Subject'
]
=
Header(subject,
'utf-8'
)
try
:
smtpObj
=
smtplib.SMTP(
'localhost'
)
smtpObj.sendmail(sender, receivers, message.as_string())
print
"邮件发送成功"
except
smtplib.SMTPException:
print
"Error: 无法发送邮件"
|
datetime模块为日期和时间处理同时提供了简单和复杂的方法.
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出.
该模块还支持时区处理
1
2
3
4
5
6
7
|
>>>
# dates are easily constructed and formatted
>>>
from
datetime
import
date
>>> now
=
date.today()
>>> now
datetime.date(
2003
,
12
,
2
)
>>> now.strftime(
"%m-%d-%y. %d %b %Y is a %A on the %d day of %B."
)
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'
|
时间的三种存在方式:时间对象,时间字符串,时间戳.
(1)字符串转datetime:
1
2
3
4
|
>>> string
=
'2014-01-08 11:59:58'
>>> time1
=
datetime.datetime.strptime(string,
'%Y-%m-%d %H:%M:%S'
)
>>>
print
time1
2014
-
01
-
08
11
:
59
:
58
|
(2)datetime转字符串:
1
2
3
|
>>> time1_str
=
datetime.datetime.strftime(time1,
'%Y-%m-%d %H:%M:%S'
)
>>> time1_str
'2014-01-08 11:59:58'
|
(3)时间戳转时间对象:
1
2
|
>>>time1
=
time.localtime()
>>>time1_str
=
datetime.datetime.fromtimestamp(time1)
|
以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile.
1
2
3
4
5
6
7
8
9
10
11
|
>>>
import
zlib
>>> s
=
b
'witch which has which witches wrist watch'
>>>
len
(s)
41
>>> t
=
zlib.compress(s)
>>>
len
(t)
37
>>> zlib.decompress(t)
b
'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979
|
有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案.
例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些.
1
2
3
4
5
|
>>>
from
timeit
import
Timer
>>> Timer(
't=a; a=b; b=t'
,
'a=1; b=2'
).timeit()
0.57535828626024577
>>> Timer(
'a,b = b,a'
,
'a=1; b=2'
).timeit()
0.54962537085770791
|
相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具.
开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试 。
doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试.
测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中.
通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致
1
2
3
4
5
6
7
8
9
|
def
average(values):
"""Computes the arithmetic mean of a list of numbers.
>>> print(average([20, 30, 70]))
40.0
"""
return
sum
(values)
/
len
(values)
import
doctest
doctest.testmod()
# 自动验证嵌入测试
|
。
以上就是python标准库我的全部总结,欢迎大家评论交流~ 。
原文链接:https://blog.csdn.net/weixin_39032019/article/details/118190807 。
最后此篇关于C站最全Python标准库总结,你想要的都在这里的文章就讲到这里了,如果你想了解更多关于C站最全Python标准库总结,你想要的都在这里的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!