提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
工作内容涉及到关于python的使用,现在将涉及到的知识点做总结。
提示:以下是本篇文章正文内容,下面案例可供参考
1、python文件首行 #!user/bin/python3的作用
表示用/usr/bin/python3 这个目录所代表的程序解释该python程序
2、枚举
使用系统内置模块enum,可以直接使用import导入,但是在导入的时候,不建议使用import enum将enum模块中的所有数据都导入,一般使用的最多的就是enum模块中的Enum、IntEnum、unique这几项、 使用场景:
from enum import Enumunique
class QQVIP(Enum):
RED = 1
GREEN = 2
BLUE = 3
BLUE_ALIAS= 3
OTHERCOLOR = "othercolor"
print(QQVIP.GREEN)
print(QQVIP.GREEN.name)
print(QQVIP.OTHERCOLOR.name)
print(QQVIP.GREEN.value)
print(QQVIP['GREEN'])
print(QQVIP['OTHERCOLOR'])
for value in QQVIP:
print(value)
'''
打印结果:
QQVIP.RED
QQVIP.GREEN
QQVIP.BLUE
QQVIP.OTHERCOLOR
'''
for value in QQVIP.__members__:
print(value)
'''
打印结果:
RED
GREEN
BLUE
BLUE_ALIAS
OTHERCOLOR
'''
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'>)
'''
result1 = QQVIP.RED == QQVIP.GREEN
print(result1)
result2 = QQVIP.RED == QQVIP.RED
print(result2)
result2_1 = QQVIP.RED is QQVIP.RED
print(result2_1)
result4 = QQVIP.RED == 1
print(result4)
print(QQVIP.BLUE)
print(QQVIP.BLUE_ALIAS)
from enum import IntEnum,unique
@unique
class Grade(IntEnum):
Heigh = 1
medium = 2
Low = 3
3 Python find() 方法
描述
Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 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文件中会发生报错,因此在将数据写入时需要用到该函数。 参数:
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。
5 rmtree()
描述:递归的去删除文件
语法:shutil.rmtree(path[, ignore_errors[, onerror]])
其他的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, 即分隔所有。 返回值 返回分割后的字符串列表 代码示例
str = "this is string example....wow!!!"
print (str.split( ))
print (str.split('i',1))
print (str.split('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]
print(filename)
结果是:inception-2015-12-05.tgz
splitlines()方法
Python splitlines() 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 语法:
str.splitlines([keepends])
返回值:
返回一个包含各行作为元素的列表
例子:
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)
用法举例:
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
subprocess.call 的使用
利用Python调用cmd的方法也有不少,例如os.system和subprocess.call(),本次主要介绍后者。同时也会说明一些避雷的注意事项。 subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。其中的subprocess.call()则可以调用windows系统cmd命令行执行额外的命令。 在使用subprocess.call()之前,需要保证调用的软件已经添加在系统的环境变量路径中。
总结
提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
|