Python使用总结 第一篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

工作内容涉及到关于python的使用,现在将涉及到的知识点做总结。


提示:以下是本篇文章正文内容,下面案例可供参考

1、python文件首行 #!user/bin/python3的作用

表示用/usr/bin/python3 这个目录所代表的程序解释该python程序

2、枚举

使用系统内置模块enum,可以直接使用import导入,但是在导入的时候,不建议使用import enum将enum模块中的所有数据都导入,一般使用的最多的就是enum模块中的Enum、IntEnum、unique这几项、
使用场景:

# 第一步:导入枚举类
from enum import Enumunique
# 继承枚举类
# 枚举的名字一般大写
# 继承Enum后枚举值可以是字符串也可是整型,如果是IntEnum则必须是整型
class QQVIP(Enum):
    RED = 1    # 各个枚举之间无逗号分隔符
    GREEN = 2
    BLUE = 3
    BLUE_ALIAS= 3
    OTHERCOLOR = "othercolor"
# 打印枚举信息
#1.1打印枚举类型,得到的是一个枚举类型
print(QQVIP.GREEN)           #打印结果:QQVIP.GREEN
 
#1.2打印枚举名,得到的是一个字符串
print(QQVIP.GREEN.name)      #打印结果:GREEN
print(QQVIP.OTHERCOLOR.name) #打印结果:OTHERCOLOR
 
#1.3.打印枚举值
print(QQVIP.GREEN.value)     #打印结果:2
 
#1.4.测试枚举值不可更改,否则报错
#QQVIP.GREEN = 100        
 
#1.5.通过枚举名称获取枚举
print(QQVIP['GREEN'])        #打印:QQVIP.GREEN
print(QQVIP['OTHERCOLOR'])   #打印:QQVIP.OTHERCOLOR

# 遍历枚举
#2.1.由于BLUE与BLUE_ALIAS枚举值相同,BLUE_ALIAS相当于BLUE的别名,所以没有被打印出来
for value in QQVIP:
    print(value)
'''
打印结果:
QQVIP.RED
QQVIP.GREEN
QQVIP.BLUE
QQVIP.OTHERCOLOR
'''
 
#2.2.可以打印出所有的枚举值包括别名,使用__members__
for value in QQVIP.__members__:
    print(value)
'''
打印结果:
RED
GREEN
BLUE
BLUE_ALIAS
OTHERCOLOR
'''
 
#2.3打印出枚举的所有信息,得到是元组
for value in QQVIP.__members__.items():
    print(value)
'''
('RED', <QQVIP.RED: 1>)
('GREEN', <QQVIP.GREEN: 2>)
('BLUE', <QQVIP.BLUE: 3>)
('BLUE_ALIAS', <QQVIP.BLUE: 3>)
('OTHERCOLOR', <QQVIP.OTHERCOLOR: 'othercolor'>)
'''
#3.1两个枚举值可以做等值比较
result1 = QQVIP.RED == QQVIP.GREEN
print(result1)   #打印:False
result2 = QQVIP.RED == QQVIP.RED
print(result2)   #打印:True
 
#3.2另一种比较
result2_1 = QQVIP.RED is QQVIP.RED
print(result2_1) #打印:True
 
#3.3两个枚举值不支持大小比较
#result3 = QQVIP.RED > QQVIP.GREEN
#print(result3)   #打印:报错
 
#3.4:枚举值和对应值比较,并不相等
result4 = QQVIP.RED == 1
print(result4)   #打印 False

# 枚举别名 不同标签,但是枚举值相同,后者是前者的别名
print(QQVIP.BLUE)
print(QQVIP.BLUE_ALIAS)   #打印结果都是BLUE

# 创建一个枚举,枚举值只能是整型且不允许设置别名
from enum import IntEnum,unique
#枚举类的的特殊使用
@unique
class Grade(IntEnum):
    Heigh  = 1
    #Heigh_Alias = 2   #报错重复值,设置unique后,不能设置别名
    medium = 2
    Low = 3 
    #Lower = "Lower"  #报错,因为继承IntEnum,所以枚举值只能是Int

3 Python find() 方法

描述

Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
语法

# 参数
#str2 -- 指定检索的字符串
#beg -- 开始索引,默认为0。
#end -- 结束索引,默认为字符串的长度。
# 返回值
# 如果包含子字符串返回开始的索引,否则返回-1
str1.find(str2, beg=0, end=len(string))

代码如下(示例):

#!/usr/bin/python 
str1 = "this is string example....wow!!!";
str2 = "exam";
print str1.find(str2);
print str1.find(str2, 10);
print str1.find(str2, 40);
# 输出结果:
15
15
-1

关于使用 python 字符串的其他知识点可以查阅其他相关资料总结

4 Python 列表append 方法

方法append用于将一个对象附加到列表末尾。

代码如下(示例):

>>> lst = [1, 2, 3] 
>>> lst.append(4) 
>>> lst [1, 2, 3, 4]

append 就地修改列表。它不是返回修改后的新列表,而是直接就地修改旧列表。


5 Python 字典

创建和使用字典
字典由键及其相应的值组成,这种键-值对称为项(item)。在前面的示 例中,键为名字,而值为电话号码。每个键与其值之间都用冒号(:) 分隔,项之间用逗号分隔,而整个字典放在花括号内。空字典(没有任 何项)用两个花括号表示,类似于下面这样:{}。 注意 在字典(以及其他映射类型)中,键必须是独一无二的,而 字典中的值无需如此
使用示例:

def creat_xxx_item(xxx_type,xxx_way):
  xxx_item = {
    "xxx_type" = xxx_type,
    "xxx_way" = xxx_way
  }
  return xxx_item

字典方法 update

方法update使用一个字典中的项来更新另一个字典。
使用示例:

ota_json = {}
x = {"magic_number" : "applo","ota_ver" : "1.0"}
ota_json.update(x)
print(ota_json)

对于通过参数提供的字典,将其项添加到当前字典中。如果当前字 典包含键相同的项,就替换它。
调用update时,可向它提供一个映射、一个由 键-值对组成的序列(或其他可迭代对象)或关键字参数。

6 Python 中的 JSON

用Python 语言 来编码和解码JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
JSON独立于语言、具有自我描述性

JSON 函数

使用JSON函数需要导入JSON库:import json

函数描述
json.dumps将python对象编码成json字符串
json.dump将python对象编码成json字符串存储到文件中
json.loads将已经编码的json字符串解码为Python 对象
json.load从json文件中读取数据

代码示例

1、json.dumps() 将python的字典类型数据转换成str。如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。
参数:

# obj:转化成json的对象。
# sort_keys =True:是告诉编码器按照字典排序(a到z)输出。如果是字典类型的python对象,就把关键字按照字典排序。
# indent:参数根据数据格式缩进显示,读起来更加清晰
# separators:是分隔符的意思,参数意思分别为不同dict项之间的分隔符和dict项内key和value之间的分隔符,把:和,后面的空格都除去了。
# skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key 。
# ensure_ascii=True:默认输出ASCLL码,如果把这个该成False,就可以输出中文
# 上述各种参数的实际应用如果有不理解的可以自己写测试用例,去看实验效果。
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)


import json

name_emb = {'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}

jsObj = json.dumps(name_emb)

print(name_emb)
print(jsObj)

print(type(name_emb))
print(type(jsObj))
#输出:
{'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}
{"user_id": "66", "movie_id": "357", "rating": "5", "time": "2009"}
<class 'dict'>
<class 'str'>

2、json.dump()将数据以json的数据类型写入到文件中
代码示例:

import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps(data)
out_file = open("my.json","w+")
json.dump(data,out_file)
out_file.close()

3、json.loads() 将str类型数据转化为python 的 dict类型

import json

name_emb = {'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}

jsDumps = json.dumps(name_emb)

jsLoads = json.loads(jsDumps)

print(name_emb)
print(jsDumps)
print(jsLoads)

print(type(name_emb))
print(type(jsDumps))
print(type(jsLoads))
#运行结果:
{'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}
{"user_id": "66", "movie_id": "357", "rating": "5", "time": "2009"}
{'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}
<class 'dict'>
<class 'str'>
<class 'dict'>


4、json.load()从json文件中读取数据

with open('text.json','r',encoding='utf-8') as f :

print(json.load(f))
# 运行结果:
{'user_id': '66', 'movie_id': '357', 'rating': '5', 'time': '2009'}


7 os.path()模块

os.path 模块主要用于获取文件的属性。
以下为os.path模块的几种常用方法:
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回文件名
例子:

返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。
>>> os.path.basename('c:\test.csv')
'test.csv'
>>> os.path.basename('c:\csv')
'csv' (这里csv被当作文件名处理了)
>>> os.path.basename('c:\csv\')
''

os.path.commonprefix(list) 返回list(多个路径)中,所有path共有的最长的路径
os.path.dirname(path) 去掉文件名返回目录
例子:

os.path.dirname('e:/1.zip')
结果:
返回e:/
os.path.dirname("1.zip")
结果:
返回空

os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
os.path.lexists 路径存在则返回True,路径损坏也返回True
os.path.expanduser(path) 把path中包含的""和"user"转换成用户目录
os.path.expandvars(path) 根据环境变量的值替换path中包含的" n a m e " 和 " name"和" name""{name}"
os.path.getatime(path) 返回最近访问时间(浮点型秒数)
os.path.getmtime(path) 返回最近文件修改时间
os.path.getctime(path) 返回文件 path 创建时间
os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误
os.path.isabs(path) 判断是否为绝对路径
os.path.isfile(path) 判断路径是否为文件
os.path.isdir(path) 判断路径是否为目录
os.path.islink(path) 判断路径是否为链接
os.path.ismount(path) 判断路径是否为挂载点
os.path.join(path1[, path2[, …]]) 把目录和文件名合成一个路径
详细用法参考:
os.path.join用法

os.path.normcase(path) 转换path的大小写和斜杠
os.path.normpath(path) 规范path字符串形式
os.path.normpath 用法
os.path.realpath(path) 返回path的真实路径
os.path.relpath(path[, start]) 从start开始计算相对路径
os.path.samefile(path1, path2) 判断目录或文件是否相同
os.path.sameopenfile(fp1, fp2) 判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) 判断stat tuple stat1和stat2是否指向同一个文件
os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组
os.path.splitdrive(path) 一般用在 windows 下,返回驱动器名和路径组成的元组
os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组
os.path.splitunc(path) 把路径分割为加载点与文件
os.path.walk(path, visit, arg) 遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
os.path.supports_unicode_filenames 设置是否支持unicode路径名

shutil 模块

shutil是 篇python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。
加载包
import shutil

1、copy()
描述:复制文件
fsrc:源文件
path:目标地址
语法:shutil.copy(fsrc,path),返回值:返回复制之后的路径
shutil.copy('test.csv','C:/Users/zhengxiang.wzx/Desktop/')
'C:/Users/zhengxiang.wzx/Desktop/test.csv)
2、copy2()
描述:复制文件和状态信息
语法:shutil.copy(fsrc,path),返回值:返回复制之后的路径
fsrc:源文件
path:目标地址
03、copyfileobj()
描述:将一个文件的内容拷贝到另一个文件中,如果目标文件本身就有内容,来源文件的内容会把目标文件的内容覆盖掉。如果文件不存在它会自动创建一个。
语法:shutil.copyfileobj(fsrc, fdst, length=16*1024])
fsrc:源文件
fdst:复制至fdst文件
length:缓冲区大小,即fsrc每次读取的长度
import shutil
f1 = open('file.txt','r')
f2 = open('file_copy.txt','w+')
shutil.copyfileobj(f1,f2,length=16*1024)
04、copyfile()
描述:将一个文件的内容拷贝到另一个文件中,目标文件无需存在
语法:shutil.copyfile(src, dst,follow_symlinks)
src:源文件路径
dst:复制至dst文件,若dst文件不存在,将会生成一个dst文件;若存在将会被覆盖
follow_symlinks:设置为True时,若src为软连接,则当成文件复制;如果设置为False,复制软连接。默认为True#file_1不存在,会产生一个shutil.copyfile('file_0.csv','file_1.csv')'file_1.csv'
#file_2存在,直接复制shutil.copyfile('file_0.csv','file_2.csv')'file_2.csv'
5 rmtree()
描述:递归的去删除文件
语法:shutil.rmtree(path[, ignore_errors[, onerror]])
#删除文件夹shutil.rmtree('C:/Users/wuzhengxiang/Desktop/Python知识点总结/test2')
其他的API接口参考链接:https://baijiahao.baidu.com/s?id=1676792697073198861&wfr=spider&for=pc

8 Python split() 方法

split() 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
语法
str.split(str=“”, num=string.count(str))
参数
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。
返回值
返回分割后的字符串列表
代码示例

#!/usr/bin/python3
 
str = "this is string example....wow!!!"
print (str.split( ))       # 以空格为分隔符
print (str.split('i',1))   # 以 i 为分隔符
print (str.split('w'))     # 以 w 为分隔符
# 结果
['this', 'is', 'string', 'example....wow!!!']
['th', 's is string example....wow!!!']
['this is string example....', 'o', '!!!']

split(“/”)[-1]的作用
以‘/ ’为分割f符,保留最后一段
示例

url = 'http://download.tensorflow.org/models/imagenet/inception-2015-12-05.tgz'
filename = url.split('/')[-1]  #以‘/ ’为分割f符,保留最后一段
print(filename)

结果是:inception-2015-12-05.tgz

splitlines()方法

Python splitlines() 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
语法:

str.splitlines([keepends])
# keepends -- 在输出结果里是否保留换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。
返回值:
返回一个包含各行作为元素的列表
例子:
#!/usr/bin/python
 
str1 = 'ab c\n\nde fg\rkl\r\n'
print str1.splitlines();
 
str2 = 'ab c\n\nde fg\rkl\r\n'
print str2.splitlines(True)

['ab c', '', 'de fg', 'kl']
['ab c\n', '\n', 'de fg\r', 'kl\r\n']

9 Python subprocess

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。
subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。
run语法格式:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
# args:表示要执行的命令。必须是一个字符串,字符串参数列表。
# stdin、stdout 和 stderr:子进程的标准输入、输出和错误。其值可以是 subprocess.PIPE、subprocess.DEVNULL、一个已经存在的文件描述符、已经打开的文件对象或者 None。subprocess.PIPE 表示为子进程创建新的管道。subprocess.DEVNULL 表示使用 os.devnull。默认使用的是 None,表示什么都不做。另外,stderr 可以合并到 stdout 里一起输出。
# stdin, stdout, stderr: 用于指定标准IO文件句柄,可以是:
	#1 subprocess.PIPE: 用作 stdout, stderr 参数的值时,可以从返回值对象中的 stdout 和 stderr 属性中读取输出内容
	#2 subprocess.STDOUT: 用作 stderr 参数的值时,相当于把标准错误重定向到标准输入中)
	#3 subprocess.DEVNULL: 用作 stdout, stderr 参数的值时,相当于把输出内容重定向到 /dev/null 用户已经打开的文件对象或描述符(整型数字)
# timeout:设置命令超时时间。如果命令执行时间超时,子进程将被杀死,并弹出 TimeoutExpired 异常。
# check:如果该参数设置为 True,并且进程退出状态码不是 0,则弹 出 CalledProcessError 异常。
# encoding: 如果指定了该参数,则 stdin、stdout 和 stderr 可以接收字符串数据,并以该编码方式编码。否则只接收 bytes 类型的数据。
# shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。

用法举例:

	stdout_pipe = subporcess.run(['diff','c:/new_dir','c:/old_dir'
'-r'],stdout = subprocess.PIPE,stderr = subprocess.PIPE)
	if stdout_pipe.returncode == 1:
	  msg = stdout_pipe.stdout # 返回值stdout的属性
	

subprocess.call 的使用

利用Python调用cmd的方法也有不少,例如os.system和subprocess.call(),本次主要介绍后者。同时也会说明一些避雷的注意事项。
subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。其中的subprocess.call()则可以调用windows系统cmd命令行执行额外的命令。
在使用subprocess.call()之前,需要保证调用的软件已经添加在系统的环境变量路径中。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值