python中常用的知识
python中一切事务皆为对象。
所以我们看字符串、数字、集合等全部使用类的方法查看某一个对象。
a = 'sb,2b' 查看对象是什么类型:print(type(a)) 查看此对象有哪些属性:dir(a) 查看此对象有哪些属性也可以用:vars(a),不仅能看到所有属性还会给属性标明是方法还是属性,也可以看到是方法 查看类下的方法如何使用: help(a)
字符串的方法如: a = 'sb,2b' ,
a.upper() 将字符全部大写
a.split(',') 将字符串处理称字典
a.__contains__(‘er’) 包含返回true 语法堂 ‘er’ in a
a.__contains__(‘er’) 包含返回true 语法堂 ‘er’ in a
a.__eq__() 字符串的相等 语法堂 ==
__format__ 字符串的格式化,
>>>a = ‘eric{}’
>>>a.__format__(‘alex’)
>>> a.format('alex’)
‘alexalex'
a.capitalize()首字符大写了
>>> a.capitalize()
‘Alex’
a.casefold() 将大写字符变小些
>>> a = 'alExV5'
>>> a.casefold()
‘alexv5'
a.center这个有用
>>> print(*'*',a,*'*')
******** alExV5 ********用center可以实现
>>> a.center()
' alExV5 ‘
>>> a.center(,'*’)
'*******alExV5*******’
a.count(‘a')计算字符出现的次数。还可以定义起始位置和结束位置
a.count(‘a’,,) 从位置0到为止10统计
a.endswith() 判断是不是以什么结尾的,如果是返回true,也可以加起始位置和结束位置,判断子序列是不是以什么结尾的
a.expandtabs()将tabs转换成空格,默认情况下将一个tabs转换成8个空格
>>> a = 'a\tlex’
>>> a.expandtabs()
'a lex’
a.find('e',,) 找某个字符,返回这个字符的位置,可以设置找的起始位置和结束位置,如果找的字符不存在,返回-
a.index() 也是找,和find的不同,找不到的时候直接抛出异常报错
a.format() 就是做字符串格式化的,内部调用__format__()
两种写法:
>>> a = "alex {0} as {1}”
>>> a.format('sb','eric’)
'alex sb as eric’
>>> a ="alex {name} as {id}”
>>> a.format(name='sb',id = 'eric’)
'alex sb as eric’
isalnum()是否是字母或者数字
isalpha()是否是字母
isdecimal()是否是10进制小数
isdigit()是否是数字
isidentifier()是否是关键字
islower()是否全部是小写
isnumeric()是否是数字
isprintable()是否可以打印,忽略
isspace()是否是空格
istitle()是否是标题,判断每一个字母首字母都是大写
isupper()是否全部是大写
‘’,join(list) 拼接
ljust() 和center功能相似,左对齐
rjust()
lower() 全部变成小写
lstrip()
maketrans()做一个对应表,和translate()结合使用,来做替换
translate()
>>> intab = 'abcde’
>>> outtab = ‘'
>>>trantab = ''.maketrans(intab,outtab)
>>> trantab
{: , : , : , : , : }
>>> l_str = 'this is a ,that is bc'
>>> l_str.translate(trantab)
'this is 1 ,th1t is 23'
partition() 做分割,把字符串分割成3部分
>>> a = 'alexissb’
>>> a.partition('is’)
('alex', 'is', 'sb’)
replace()替换
replace(‘old’,’new’,个数)
rfind()从右向左找
split()
splitlines()根据行分割,没有它用split(‘\n')也能实现
strip()
startswith()以什么开头
swapcase() 大小写转换
title() 将字符串中所有的字母的首字母大写
upper() 大写
zfill()
python2中使用os.system执行系统命令
>>> a = os.system('df -lh')
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 465Gi 286Gi 179Gi % % /
>>> a
这里看到变量a的值是0,却不是命令执行的结果
使用os.popen()可以获得命令执行结果
>>> b = os.popen('df -lh')
>>> b.read()
'Filesystem Size Used Avail Capacity iused ifree %iused Mounted on\n/dev/disk1 465Gi 286Gi 179Gi 62% 1341376 4293625903 0% /\n'
os.popen()相当于打开了一个临时文件存储系统命令执行的结果,所以要用b.read()读取
python2中还可以使用subprocess模块执行操作系统命令。
>>> subprocess.call(['df','-lh'])
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 465Gi 209Gi 256Gi % % /
/dev/disk2s1 741Mi 557Mi 184Mi % % /Volumes/Parallels Desktop
/dev/disk3s2 786Mi 669Mi 117Mi % % /Volumes/ParallelsDesktop 11.1.- 这里给call方法,传“df -lh”这种多个参数时,用的是传入列表的形式['df','-lh’],python解释器在处理subprocess.call()方法时,将传进来的列表参数经过处理,最终转换成shell中的df -lh,那么如果我就不想传列表,怎么办呢。如下方法
>>> subprocess.call('df -lh',shell=True)
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 465Gi 209Gi 256Gi % % /
/dev/disk2s1 741Mi 557Mi 184Mi % % /Volumes/Parallels Desktop
/dev/disk3s2 786Mi 669Mi 117Mi % % /Volumes/ParallelsDesktop 11.1.- 这里 subprocess.call('df -lh',shell=True)就明确告诉python解释器,你不用给我转了,就使用shell来进行执行。 怎么实现获取执行结果呢?
>>> a = subprocess.call("df -lh",shell=True)
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 465Gi 209Gi 256Gi % % /
/dev/disk2s1 741Mi 557Mi 184Mi % % /Volumes/Parallels Desktop
/dev/disk3s2 786Mi 669Mi 117Mi % % /Volumes/ParallelsDesktop 11.1.-
>>> a 这里我们看到0为执行命令的返回状态。 如果想存下来,不能用call,要用Popen方法。
>>> a = subprocess.Popen('df -lh',shell=True)
>>> Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 465Gi 209Gi 256Gi % % /
/dev/disk2s1 741Mi 557Mi 184Mi % % /Volumes/Parallels Desktop
/dev/disk3s2 786Mi 669Mi 117Mi % % /Volumes/ParallelsDesktop 11.1.- >>> a
<subprocess.Popen object at 0x10881cb50>
看到这个和os模块的Popen方法得到的一样。那么我们试下a.read()
发现没有read()方法。在试下a.stdout.read()
同样没有a.stdout.read()方法。
那么分析下python运行Popen方法的执行过程。
Popen()方法执行里面的shell命令,其实是python又开启了一个子进程,子进程运行的结果要想返回给Popen()方法,需要使用管道,写法如下:
>> a = subprocess.Popen('df -lh',shell=True,stdout=subprocess.PIPE)
>>> a.stdout.read()
'Filesystem Size Used Avail Capacity iused ifree %iused Mounted on\n/dev/disk1 465Gi 209Gi 255Gi 46% 54971946 66867668 45% /\n/dev/disk2s1 741Mi 557Mi 184Mi 76% 142675 47036 75% /Volumes/Parallels Desktop 11\n/dev/disk3s2 786Mi 669Mi 117Mi 86% 171353 29853 85% /Volumes/ParallelsDesktop 11.1.3-32521\n’
总结:
使用subprocess模块,想获得命令执行结果。.使用Popen方法 .使用管道3.使用a.stdout.read()方法记住下面的例子即可:
a = subprocess.Popen('df -lh',shell=True,stdout=subprocess.PIPE)
python3中使用os.system执行系统命令,和python2相同
python3中使用subprocess.Popen()方法和python2相同。但是在python3中subprocess模块中多了一个subprocess.run()方法。
记住:python3.5就不用Popen,想得到命令的执行结果用subporcess.run()方法即可,run方法在2.7中是没有的
>>> B = subprocess.run('df -lh',shell=True,stdout=subprocess.PIPE)
>>> type(B)
<class 'subprocess.CompletedProcess'>
>>> B
CompletedProcess(args='df -lh', returncode=, stdout=b'Filesystem Size Used Avail Capacity iused ifree %iused Mounted on\n/dev/disk1 465Gi 286Gi 179Gi 62% 1341486 4293625793 0% /\n')
>>> B.stdout.read()
Traceback (most recent call last):
File "<stdin>", line , in <module>
AttributeError: 'bytes' object has no attribute 'read'
>>> B.stdout
b'Filesystem Size Used Avail Capacity iused ifree %iused Mounted on\n/dev/disk1 465Gi 286Gi 179Gi 62% 1341486 4293625793 0% /\n'
>>> B.stdout.decode()
'Filesystem Size Used Avail Capacity iused ifree %iused Mounted on\n/dev/disk1 465Gi 286Gi 179Gi 62% 1341486 4293625793 0% /\n'
python中常用的知识的更多相关文章
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- python中常用的九种数据预处理方法分享
Spyder Ctrl + 4/5: 块注释/块反注释 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(St ...
- python中常用的模块二
一.序列化 指:在我们存储数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式,这个就是序列化, 不同的序列化结果不同,但目的是一样的,都是为了存储和传输. 一,pickle.可 ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- python中常用的时间操作
python中常用的时间模块有time和datetime,以下是这两个模块中常用的方法: #先引入模块 import timefrom datetime import datetiem, timezo ...
- python中常用的导包的方法和常用的库
python中常用的导包的方法 导入包和包名的方法:1.import package.module 2.from package.module import * 例一: ...
- python 历险记(四)— python 中常用的 json 操作
目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编码和解码? 常用的 json 操作有哪些? json 操作需要什么库? 如何 ...
- 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...
- python中常用的模块的总结
1. 模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件.(例如:文件名:test.py,对应的模块名:test) ...
随机推荐
- add new row to data.frame/dataframe
df<-NULL new_row<-data.frame(colA="xxx",colB=123) df<-rbind(df,new_row)
- Sword redis配置
Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. --查看配置 你可以通过 CONFIG 命令查看或设置配置项(使用CONFIG必须在redis客 ...
- Selenium常用操作汇总二——如何处理alert、confirm、prompt对话框
alert.confirm.prompt这样的js对话框在selenium1.X时代也是难啃的骨头,常常要用autoit来帮助处理. 试用了一下selenium webdriver中处理这些对话框十分 ...
- Linux 下如何处理包含空格和特殊字符的文件名
Linux 下如何处理包含空格和特殊字符的文件名 作者: Avishek Kumar 译者: LCTT zpl1025 | 2015-07-08 07:47 评论: 12 收藏: 9 分享: 1 ...
- Axiom3D:Ogre中Mesh文件格式分析(一)
在Axiom3D,或者说是Ogre的mesh的文件格式我们可能通过代码反推出相关格式,相关过程本来我是直接写的,后面发现相关流程写完后,我自己都看晕了,然后我就把一些过程用Execl整理出来,发现过程 ...
- SAP MM01 创建物料主数据 [关注公众号后回复MM01获取更多资料]
操作内容 物料主数据,适用于所有有物料编码物料相关信息的系统维护 业务流程 新项目设计冻结后—M公司 PD用-物料编码申请表D-BOM Material Number Application部门内部 ...
- ABAP--如何创建自定义打印条码
ABAP--如何创建自定义打印条码 BARCODE in Smartforms: How to create customize BARCODE for Smartforms. 1 Introduct ...
- objective-C 的内存管理之-自动释放池(autorelease pool)
如果一个对象的生命周期显而易见,很容易就知道什么时候该new一个对象,什么时候不再需要使用,这种情况下,直接用手动的retain和release来判定其生死足矣.但是有些时候,想知道某个对象在什么时候 ...
- Redis与Memcached的实现对比
原文链接:http://www.tuicool.com/articles/qUBNZva Memcached 与 Redis ,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了.前两年还在学校 ...
- 导入Maven项目后,Eclipse提示“Missing artifact ”类的错误
导入Maven项目后,Eclipse提示“Missing artifact ”类的错误 标签: Maven Missing art 2016-08-15 16:05 679人阅读 评论(0) 收藏 举 ...