python中,调用linux执行命令的方法中有break,需要用到返回值 继续自己的程序,结果执行调用方法就退出程序了,怎么办?
1个回答
关注
展开全部
您好,我这边正在为您查询,请稍等片刻,我这边马上回复您~关于python中,调用linux执行命令的方法中有break,需要用到返回值 继续自己的程序,结果执行调用方法就退出程序了,怎么办?
咨询记录 · 回答于2021-12-02
python中,调用linux执行命令的方法中有break,需要用到返回值 继续自己的程序,结果执行调用方法就退出程序了,怎么办?
您好,我这边正在为您查询,请稍等片刻,我这边马上回复您~关于python中,调用linux执行命令的方法中有break,需要用到返回值 继续自己的程序,结果执行调用方法就退出程序了,怎么办?
方法一、使用os模块的system方法:os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256/512表示未找到,该方法适用于shell命令不需要输出内容的场景。
os.system(cmd)会启动子进程,在子进程中执行cmd,如果cmd有执行内容,会在标准输出显示。
举例说明:
1. 列举当前目录下的所有文件。
importos
val= os.system('ls -al')print val #输出为0
val = os.system('ls -al non_exist_folder')print val #输出为512
val = os.system('ls -al|grep non_exist_val')print val #输出为256
方法二、使用os.popen(),该方法以文件的形式返回shell指令运行后的结果,需要获取内容时可使用read()或readlines()方法。
os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
举栗:
importos
os.popen('ls -l')
输出:os.popen('ls -l').read() #返回字符串类型的结果
输出:'total 0\n-rw-rw-r-- 1 roaddb roaddb 0 Dec 11 10:09 a.txt\n-rw-rw-r-- 1 roaddb roaddb 0 Dec 11 10:09 b.txt\n'os.popen('ls -l').readlines() #返回一个list类型的结果
输出:['total 0\n', '-rw-rw-r-- 1 roaddb roaddb 0 Dec 11 10:09 a.txt\n', '-rw-rw-r-- 1 roaddb roaddb 0 Dec 11 10:09 b.txt\n']
val=os.popen('ls -al')for i inval.readlines():print i
希望以上回答对您有所帮助~
调用这个方法,我需要返回内容,继续操作。可是调用的方法执行完就就关闭连接并退出了
您这几种方法都测试了吗?
recv_buf_list = []# 建立交互式shell连接ssh_shell = self.sc.invoke_shell()# 发送并执行指令print('执行命令-开始:%s' % cmd)ssh_shell.sendall(cmd + '\n')# 接收控制台输出while True: import time time.sleep(2) recv_buf = str(ssh_shell.recv(1024 * 10), encoding=encoding).strip() if print_flag: print('接收数据:\n' + recv_buf) # 用换行符\r\n分割 stdout_list = recv_buf.split('\r\n') recv_buf_list.extend(stdout_list)
您好,我这边正在为您查询,请稍等片刻,我这边马上回复您~
已赞过
评论
收起
你对这个回答的评价是?