浏览量: 91 次浏览

Python日常收集小知识

2020年2月24日 0 作者 Nie Hen

使用Python处理shell命令

  1. os模块中的os.system()这个函数来执行shell命令
    (这个方法没有输出)
    2、popen()#这个方法能得到命令执行后的结果是一个字符串,要自行处理才能得到想要的信息。
>>> import os
>>> str = os.popen("ls").read()
>>> a = str.split("\n")
>>> for b in a:
        print b

3、commands模块#可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位

import commands
a,b = commands.getstatusoutput('ls')
a是退出状态
b是输出的结果。
>>> import commands
>>> a,b = commands.getstatusoutput('ls')
>>> print a
0
>>> print b
anaconda-ks.cfg
install.log
install.log.syslog

4、subprocess模块
使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen()、commands.等旧的函数或模块。

import subprocess
subprocess.call(command, shell=True)
#会直接打印出结果。
subprocess.Popen(command, shell=True) #这样就可以输出结果了。

如果command不是一个可执行文件,shell=True是不可省略的。

Python正则表达式

1.需要添加转移字符的符号

* . ? + $ ^ [ ] ( ) { } | \ /

\ 匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则 也匹配,如‘\n’或’\r’。
() 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
. 匹配除换行符\n之外的任何单字符。
[] 标记一个中括号表达式的开始。
\? 匹配前面子表达式零次或一次,或指明一个非贪婪限定符
\ 将下一个字符标记为或特殊字符或原意字符或后向引用或八进制转义符。例如:‘n’匹配字符‘n’,而‘\n’匹配换行符。序列‘\’匹配’\’
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时他表示不接受该字符集合。
{} 标记限定符表达式的开始。
| 指明两项之间的一个选择。

检索和替换
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
语法:
re.sub(pattern, repl, string, count=0, flags=0)
参数
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

list转字符串

通常使用字符串转list 使用list() 或则切片split就可以
但是list转字符串 用str() 有时不管用
用join() str = ”.join(list)就可以 如果要添加什么可以 str = ‘**’.join(list)

查看Python文档

在命令行中输入 python -m pydoc -p 0
就会返回一个 带端口的链接 打开链接里面就是该Python环境下的各种库的文档
每个库和函数 搜索找相关信息
或者直接搜Python官方文档 链接

Python数据结构与算法 (缩略 )

解压序列赋值给多个变量
任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量。 唯一的前提就是变量的数量必须跟序列元素的数量是一样的。
例如

>>> p = (4, 5)
>>> x, y = p
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data

如果变量个数和序列元素的个数不匹配,会产生一个异常。
字符串也可以这样使用
strong text解压可迭代对象赋值给多个变量
Python 的星号表达式 可以表示多个上面使用方式的多个变量

>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, email, *phone_numbers = record
>>> name
'Dave'
>>> email
'dave@example.com'
>>> phone_numbers
['773-555-1212', '847-555-1212']
>>>

其中的 phoe_numbers 永远都是列表类型
扩展的迭代解压语法是专门为解压不确定个数或任意个数元素的可迭代对象而设计的