python模块使用集

一、linux操作类

paramiko

下载
pip install paramiko
使用
实例化
client = paramiko.SSHClient()
自动添加策略,保存服务器的主机名和密钥信息,如果不添加,不在本地know_hosts文件中记录的主机将无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
连接SSH服务端,以用户名和密码进行认证
client.connect(hostname='',port='',username='',password='')
打开一个channel并执行命令
stdin, stdout, stderr = client.exec_command('df -h')
打印执行结果
print(stdout.read().decode('utf-8'))
关闭连接
client.close()

密钥连接
配置私人密钥文件
private = paramiko.RSAKey.from_private_key_file('/.ssh/id_rsa')
client.connect(hostname='',port='',username='',pkey=private)

SFTPClient方法
获取Transport实例
tran = paramiko.Transport(('host','port'))
连接ssh服务端password方式
tran.connect(username='',password='')
私钥方式登录
private = paramiko.RSAKey.from_private_key_file('/.ssh/id_rsa')
tran.conenct(username='',pkey=private)
获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)
设置上传的本地/远程文件路径
localpath = "/Users/root/Downloads/1.txt"
remotepath = "/tmp/1.txt"
执行上传动作
sftp.put(localpath, remotepath)
执行下载动作
sftp.get(remotepath, localpath)
tran.close()

subprocess

subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,获得他们的返回值

旧有模块

os.system()
a = os.system("ls -l")
print(a)
#执行操作系统的命令,将结果输出到屏幕,只返回命令执行状态(0:成功,非 0 : 失败)
os.popen()
a = os.popen("ls -l")
print(a.read())
#执行操作系统的命令,将结果保存在内存当中,可以用read()方法读取出来

subprocess模块

subprocess.call()
a = subprocess.call(["ls","-l"])
#执行命令,返回命令的结果和执行状态,0或者非0
subprocess.check_call()
a = subprocess.check_call(["ls","-l"])
#执行命令,返回结果和状态正常为0 ,执行错误则抛出异常
subprocess.getstatusoutput()
a = subprocess.getstatusoutput('pwd')
#接受字符串形式的命令,返回一个元组形式的结果,第一个元素是命令执行状态,第二个为执行结果
subprocess.getoutput()
a = subprocess.getoutput('pwd')
#接受字符串形式的命令,返回执行结果

subprocess.Popen()

a = subprocess.Popen("ls /", shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE) # 使用管道
a.stdout.read()  # 标准输出
a.stdout.read()  # 标准错误输出
a.stdout.close()  # 关闭
#命令成功执行则错误输出为空,反之标准输出为空

poll()
 a = subprocess.Popen("ls /",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
print(a.poll())
#定时检查命令有没有执行完毕,执行完毕后返回执行结果的状态,没有执行完毕返回None

wait()
a= subprocess.Popen("sleep 3;echo 'begin'",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
a.wait()
#等待命令执行完成,并且返回结果状态

pid()
import subprocess
a = subprocess.Popen("sleep 5;echo 'begin'",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
a.pid # 获取这个linux shell 的 进程号

terminate()
import subprocess
a = subprocess.Popen("sleep 3;echo 'begin'",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
a.terminate() # 结束进程

二、函数

map函数

接受两个参数 **函数**和**可迭代对象**
函数会作用于每个迭代对象
然后返回一个新的迭代对象
  • 例:将可迭代对象都乘以2
print(list(i for i in range(9)))
print(list(map(lambda x:x*2,[i for i in range(9)])))
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 2, 4, 6, 8, 10, 12, 14, 16]	

reduce函数

同样接受两个参数 函数可迭代对象
不过reduce会将第一个执行结果会和后面的迭代对象累计不断叠加
在python3之后需要引用才能使用
from functools import reduce

  • 例:将一个列表的数值叠加
print(list(i for i in range(1,6)))
print(reduce(lambda x,y:x+y,(i for i in range(1,6))))
[1, 2, 3, 4, 5]
15

我们在这里举一个例子更好的理解结果于后面的序列叠加

print(list(i for i in range(1,6)))
print(reduce(lambda x,y:x*10+y,(i for i in range(1,6))))
[1, 2, 3, 4, 5]
12345


print(list(i for i in range(1,6)))
print(reduce(lambda x,y:x+y*10,(i for i in range(1,6))))
[1, 2, 3, 4, 5]
141

列表是[1,2,3,4,5]
x*10+y 第一个结果是1 * 10 + 2 = 12
第二个结果是12 * 10 + 3 = 123 从这里就可以看出来
我们将第一个结果的继续完成函数的方法

x+y10第一个结果是1 + 2 * 10 = 21
第二个结果是 21 + 3
10 = 51 将完成的结果一直累加

filter函数

同样接受两个参数 函数可迭代对象
把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

  • 例:将列表大于五的数丢弃
print(list(i for i in range(1,10)))
print(list(filter(lambda x:x<5,(i for i in range(1,10)))))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4]
  • 例:将列表为空的值去掉
tests = ['A','','s',None]
print(list(filter(lambda x:x and x.strip(),tests)))
['A', 's']
  • 例:将列表中的素数列出
def cutlist(c):
    def lists(c):
        return [i for i in range(2,c)]
    for i in lists(c):
        if c % i == 0:
            return False
    return True

def sunum(x):
    return (list(filter(cutlist,[i for i in range(1,x+1)])))

print(sunum(10))
[1, 2, 3, 5, 7]
  • 例:将列表中的回数列出
def hui(x):
    lists = []
    for i in str(x):
        lists.append(int(i))
    lists.reverse()
    a = reduce(lambda x,y:x*10 + y,lists)
    if x == a:
        return True
    else:
        return False

print(list(filter(hui,[i for i in range(1,100)])))
  • 例:配合使用查询列表奇数和
lists = [1,2,3,4,5,6,7,8,9,10]
r = reduce(lambda x,y:x+y,list(filter(lambda x:x%2!=0 ,lists)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值