python_函数

蛋蛋 2022年11月28日 21 0

python内置函数:
https://www.runoob.com/python/python-built-in-functions.html

a

b

c

clear()--》删除

删除字典内所有的元素

dic = {‘a’:123,‘b’:456,‘c’:789,‘d’:567}
dic.clear()
print(dic)

{}

commands

getstatusoutput()

在Python 2中,经常使用commands模块来执行shell的命令,尤其是常用getstatusoutput()函数。但是在Python 3中,突然发现这个函数没有了。为什么呢?

getstatusoutput()这个函数有一个很大的缺陷,就是它的返回值中无法区分stderr和stdout.

那么在Python 3中如果要调用一个命令,如何做呢?有2种方法。其实它们在Python 2中也适用。

方法1. 使用subprocess.check_output()函数

如果命令调用失败,check_output()会抛出一个CalledProcessError的异常。

如果要看到stderr的内容,即合并stdout和stderr,可以把 stderr=subprocess.STDOUT 作为check_output的一个参数。

方法2. 自己定制一个get_status_output()函数,内容如下:

def get_status_output(*args, **kwargs):
p = subprocess.Popen(*args, **kwargs)
stdout, stderr = p.communicate()
return p.returncode, stdout, stderr

Python 3中的commands.getstatusoutput()的替代方案,即 subprocess.getstatusoutput().

https://blog.csdn.net/weixin_42310670/article/details/113479369

copy()--》拷贝

拷贝一个字典

dic = {‘a’:123,‘b’:456,‘c’:789,‘d’:567}
dic_two = dic.copy()
print(dic)

{‘a’: 123, ‘b’: 456, ‘c’: 789, ‘d’: 567}
print(dic_two)

{‘a’: 123, ‘b’: 456, ‘c’: 789, ‘d’: 567}

d

datetime.date.today().strftime('%y%m%d')

获取当前日期

import datetime
today=datetime.date.today().strftime('%Y-%m-%d')
print(today)
#打印结果:2020-04-02

e

f

fromkeys(seq[,value])

创建一个新字典,seq作为键,value为字典所有键的初始值(默认为None)

dic = dict.fromkeys(‘abcd’)
print(dic)

{‘a’: None, ‘b’: None, ‘c’: None, ‘d’: None}

dic = dict.fromkeys(‘abc’,1)
print(dic)

{‘a’: 1, ‘b’: 1, ‘c’: 1}

g

get(key,default = None)

返回指定的键的值,如果键不存在,则返会 default 的值

dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
print(dic.get(‘b’))

2
print(dic.get(‘e’,5))

5

h

i

int(time.time())

获取当前时间戳

import time
int(time.time())
#打印结果:1658978376
int(time.time()*1000)
#打印结果:1658978400276

items()

返回键值对的可迭代对象,使用 list 可转换为 [(键,值)] 形式

dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
print(dic.items())

dict_items([(‘a’, 1), (‘b’, 2), (‘c’, 3), (‘d’, 4)])

print(list(dic.items()))

[(‘a’, 1), (‘b’, 2), (‘c’, 3), (‘d’, 4)]

j

json

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言
  • JSON 具有自我描述性,更易理解

引用模块

import json

编码:把一个Python对象编码转换成Json字符串 json.dumps()
解码:把Json格式字符串解码转换成Python对象 json.loads()
load和dump处理的主要是文件
loads和dumps处理的是字符串

python和Json数据类型的映射

JSON Python
object dict
array list
string str
number int
true True
false False
null None

json.load()/json.loads() json.dump()/json.dumps()

  • json.load()从json文件中读取数据
  • json.loads()将str类型的数据转换为dict类型
  • json.dumps()将dict类型的数据转成str
  • json.dump()将数据以json的数据类型写入文件中

1、json.dumps()和json.loads()是以json格式处理函数(可以这么理解,json是字符串
  (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
  (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
2、json.dump()和json.load()主要用来读写json文件函数
总结
res=json.loads(var) var为变量
res=json.load(file) file为文件路径
res都为字典类型

json.dumps()

import json

def demo():
	data = {"name": "张三", "age": "18", "sex": "男"}
	result = json.dumps(data, indet=5, ensure_ascii=False)
	print(result)
	print(type(result))

demo()

输出结果:

{
	"name": "张三",
	"age": "18",
	"sex": "男"
}
<class 'str'>

json.loads()

data = """{
"name": "张三",
"age": "18",
"sex": "男"
}"""
# 一般此时data为request.text返回值
print(data, type(data))
data = json.loads(data)
print(data, type(data))

输出结果:

{
"name": "张三",
"age": "18",
"sex": "男"
}<class 'str'>
{'name': '张三', 'age': '18', 'sex': '男'}<class 'dict'>

注:json内部要使用双引号。

k

keys()

返回一个迭代器,可以使用 list() 来转换为列表

dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
print(dic.keys())

dict_keys([‘a’, ‘b’, ‘c’, ‘d’])
print(list(dic.keys()))

[‘a’, ‘b’, ‘c’, ‘d’]

l

len()--》个数

返回键的个数,即字典的长度。返回对象(字符、列表、元组等)长度或项目个数。

dic = {‘a’:123,‘b’:456,‘c’:789,‘d’:567}
print(len(dic))

4

line

line.startswith

搜索一列,直到找到str Linear,找到该位置的索引,将其添加1,然后通过切片提取数据帧。

获取行号

def find_index_of(lines, predicate):
  for index, line in enumerate(lines):
    if predicate(line):
      return index

index = find_index_of(sheetname, lambda x: x.startswith("Linear"))

line.split()

通常用于将字符串切片并转换为列表。

拆分字符串。通过制定分隔符将字符串进行切片,并返回分割后的字符串列表[list]

语法:

str.split(str="",num=string.count(str))[n]

参数:str:分隔符,默认为空格,但不能为空("")

num: 表示分割次数。如果指定num,则分割成n+1个子字符串,并可将每个字符串赋给新的变量

示例:

u = "www.google.com"
print(u.split('.')) --> ['www','google','com']
print(u.split('.')[0])-->www

补充:

line.strip().split(',')
strip()表示删除掉数据中的换行符,split(',')则是数据中遇到',' 就隔开。

list

list.append(obj)

用于在列表末尾添加新的对象

list.read()

把一个文档当成一个字符串(结尾有空字符串)返回。也就是一个文档存储在一个字符串对象中,如果文件很大,就很耗内存。

注:read()和原来的文档相比,输出的时候结尾多了一个'\n'(换行),其余没区别

如果想要输出和原文档一模一样,需要在结果加rstrip(),也就是去掉末尾空格

cat pi_digits.txt
3.14345345345
  23426534534
  45345123656
file_name = 'pi_digits.txt'
with open(file_name) as f:
    contents = f.read()
print(contents)
print(contents.rstrip())

3.14345345345 
  23426534534 
  45345123656 
 
3.14345345345
  23426534534
  45345123656

显然第一个末尾多一个空行,第二次和原文档一样。

list.readline()

readline(),类似于readlines(),不过它每次只读取文档的一行。以后需要逐步循环(一般用whicl循环),最后遍历整个文件。

注意:输出情况同readlines()

list.readlines()

readlines(),是把一个文档的每一行(包含行前的空格,行末加一个\n),作为列表的一个元素,存储在一个list中。每一个行作为list的一个元素。

注意:readlines()和原文档相比,每行之后都多出一个空行,因为原来每行末尾都加了'\n',要想和原文档输出一样,那么每个行末尾加上rstrip()即可消除右边空格,左边空格不变。

二维矩阵行列转换

print('二维矩阵行列转换')
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(list(map(list, zip(*a))))  # [[1, 4, 7], [2, 5, 8], [3, 6, 9]], map()函数把zip(*a)后的每一个元素转化为list

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

m

n

o

open()

open()会把原来的文档对象保存到一个变量中。且在原来的每行末尾加一个看不见的'\n',我们姑且当成是直接打包一个文件(每行多加一个'\n')。逐行读取的时候和readlines()是一样的。但是readlines()会把一个文件以行为单位放在一个list中,但是open()结果是把一个文档整体打包。但是open()返回对象和readlines()还有一个区别,readlines()返回的对象可以在with代码块之使用,但是open()返回的对象只能在with代码块使用。

不同模式打开文件的完全列表:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
file_name = 'pi_digits.txt'
f1 = open(file_name)
#这里f1在原来的每行末尾都放置了一个'\n',print本身也会加一个'\n',所以每行输出后多两个'\n',
#两次换行的结果是行和行之间夹着一个空行
for line in f1:
    print(line)

3.14345345345
 
  23426534534
 
  45345123656

file_name = 'pi_digits.txt'
with  open(file_name) as f1:
#下面的for代码块使用了f1,必须有缩进,因为使用f1只能在with代码块内使用
    for line in f1:
        print(line)
 
with open(file_name) as f2:
    lines = f2.readlines()

#下面的for语句可以有缩进也可以没有缩进,有缩进就意味着在with代码块内,没有缩进意味着在with代码块外
#使用,这两种都是可以的,所以相对而言,readlines()返回对象有更大的自由度

for line in lines:
    print(line.rstrip())

os

os.path.getctime()

获取系统指定路径的ctime

os.listdir()

返回指定的文件夹包含的文件或文件夹的名字的列表

os.remove()

os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出 OSError。

os.stat()

os.stat() 函数会给出一个文件或文件描述符(file descriptor)的各种状态信息,如权限,大小,所属用户和组,修改时间等。

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
st_mtime=1297230027, st_ctime=1297230027)

>>> statinfo.st_size
264

popen()

os.popen() 方法用于从一个命令打开一个管道。

在Unix,Windows中有效

os.popen(command[, mode[, bufsize]])

command -- 使用的命令。

mode -- 模式权限可以是 'r'(默认) 或 'w'。

bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

p

pop(key[,default])--》删除

删除字典中 key 的值,返回被删除的值。key 值如果不给出,则返回default的值

>>> dic = {'a':1,'b':2,'c':3,'d':4}
>>> print(dic.pop('a',6))
1					//返回删除的值
>>> print(dic)
{'b': 2, 'c': 3, 'd': 4}
>>> print(dic.pop('e','字典中没有该值'))
字典中没有该值		//如果字典中不存在该键,则返回 default 的值
>>> print(dic)
{'b': 2, 'c': 3, 'd': 4}

popitem()

随机返回一个键值对(通常为最后一个),并删除最后一个键值对

>>> dic = {'a':1,'b':2,'c':3,'d':4}
>>> print(dic.popitem())
('d', 4)
>>> print(dic)
{'a': 1, 'b': 2, 'c': 3}
>>> print(dic.popitem())
('c', 3)
>>> print(dic)
{'a': 1, 'b': 2}

q

r

range()

python2.x range() 函数可创建一个整数列表,一般用在 for 循环中。

Python3 range() 返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表,具体可查阅 Python3 range() 用法说明

range(stop)
range(start, stop[, step])
  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>>range(10)        # 从 0 开始到 9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)     # 从 1 开始到 10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)  # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)  # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]

以下是 range 在 for 中的使用,循环出runoob 的每个字母:

>>>x = 'runoob'
>>> for i in range(len(x)) :
...     print(x[i])
... 
r
u
n
o
o
b
>>>

s

setdefault(key,default = None)

如果键存在于字典中,则不修改键的值

如果键不存在于字典中,则设置为 default 值

# 如果键存在,则不修改键的值
dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
dic.setdefault(‘a’,8)
print(dic)

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4}
# 如果键不存在于字典中,则设置为 default 值
dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
dic.setdefault(‘e’,5)
print(dic)

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5}

split()

拆分字符串。通过制定分隔符将字符串进行切片,并返回分割后的字符串列表[list]

str()--》字符串

将字段转换为字符串

t

type()--》类型

查看字典的类型

dic = {‘a’:123,‘b’:456,‘c’:789,‘d’:567}
print(type(dic))

<class ‘dict’>

time

time.localtime()

类似gmtime(),作用是格式化时间戳为本地的时间。 如果sec参数未输入,则以当前时间为转换标准。 DST (Daylight Savings Time) flag (-1, 0 or 1) 是否是夏令时。

#!/usr/bin/python
import time
 
print "time.localtime() : %s" % time.localtime()

输出结果为:

time.localtime() : time.struct_time(tm_year=2016, tm_mon=11, tm_mday=27, tm_hour=10, tm_min=26, tm_sec=5, tm_wday=6, tm_yday=332, tm_isdst=0)
#!/usr/bin/python
import time

now = int(time.time())
time_stamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
print(time_stamp)

输出结果:

2022-09-13 17:28:46

u

update(字典对象)

将字典对象更新到字典中

dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
dic_two = {‘f’:6}
dic.update(dic_two)
print(dic)

{‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘f’: 6}

v

values()

返回一个可迭代对象,使用 list 转换为字典中 值 的列表

dic = {‘a’:1,‘b’:2,‘c’:3,‘d’:4}
print(list(dic.values()))

[1, 2, 3, 4]

w

x

y

z

zip()

zip() 接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个 tuple,然后返回由这些 tuple 组成的 list。

若传入参数的长度不等,则返回 list 的长度和参数中长度最短的对象相同。

利用 * 号操作符,可以将 list 解压。

Python3.0开始,zip()函数已经不返回 list 了,而是返回 iterable(可迭代对象)。这个可迭代对象需要特别注意,只能进行一次迭代遍历,第二次遍历就是空了。这个坑了我一个多小时。

简单示例

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9, 10, 11]

ab = zip(a, b)
print(list(ab))     # [(1, 4), (2, 5), (3, 6)]
# zip()之后的结果只能“使用一次”
# zip()实际上是一个生成器对象,故使用list()获取zip()结果时,已经相当于是完成一次迭代遍历
# 第二次再次使用list()时迭代已经结束,所以返回[]
print(list(ab))     # []

ac = zip(a, c)
# print(list(ac))     # [(1, 4), (2, 5), (3, 6)],以短的为准

_ac = zip(*ac)      # 与 zip 相反,可理解为解压,返回二维矩阵式
print(list(_ac))    # [(1, 2, 3), (7, 8, 9)],如果没把上面的 print(list(ac)) 注掉,这里的显示结果就是[]了

zip与for的结合

print('zip与for的结合')
name = ('jack', 'alex', 'sony', 'joey')
age = (25, 28, 21, 30)
for a, n in zip(name, age):
    print(a, n)

jack 25
alex 28
sony 21
joey 30
Last Updated: 2022/11/29 17:43:09
容器_rancher Elasticsearch: 权威指南