【Python网络开发-第五章(二)通过文件句本的方式传参】

26_第五章-通过文件句柄的方式传参

一、理论

1、subprocess模块

在这里插入图片描述

  • 知识回顾
  • 调用系统命令1代码
import subprocess

#2、定义一个函数调用系统的所有命令
def run_cmd(command):

  #初始化一个子进程执行系统命令
  #subprocess.PIPE 接受子进程的返回信息,一定需要解码,指定编码GBK
  #DEVNULL:把爱stdin、stdout、stderr的信息丢掉,不输出
  return_cmd = subprocess.run(command,stdout=subprocess.DEVNULL,stderr=subprocess.PIPE,encoding='GBK',shell=True)
  return_cmd = subprocess.run(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,encoding='GBK',shell=True)
  # return_cmd = subprocess.run(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding='GBK',shell=True)

  if return_cmd.returncode == 0:
      print("success:")
      print(return_cmd.stdout)
  else:
      print("命令执行错误:")
      print(return_cmd.stderr)

run_cmd('dir D:\\')
run_cmd('ipconfig')
run_cmd('exit 1')

在这里插入图片描述

stderr=subprocess.STDOUT意义:

stderr的数据和stdout的数据合并起来,通过subprocess.PIPE一起传出,返回给主进程

2、subprocess模块之run方法

在这里插入图片描述
在这里插入图片描述

二、实操案例

1、代码:调用系统命令2

在这里插入图片描述

2、运行结果

在这里插入图片描述

3、分析

在本节中收获小结如下

(1)文件路径有两种输入方式

# f = open("D:\\ini.txt")
f = open("D:/ini.txt")

(2)使用句本传参不方便

  • 不如python内置的读文件方式方便;

  • 如果一定要调用操作系统读文件,要使用后面将讲到Popen方式

三、源代码

# -*- coding:utf-8 -*-

import subprocess
#错误的文件路径
# f = open(r"D:\in.txt")

#以下两种路径输入方式皆可
# f = open("D:\\ini.txt")
f = open("D:/ini.txt")

#文件句本传参交不方便 #以后给命令传参一定用Popen
#shell参数默认为Flase,设为True表示通过操作系统执行
# return_cmd = subprocess.run('python',stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True) #不再使用PIPE传参,改用f
return_cmd = subprocess.run('python',stdin=f,stdout=subprocess.PIPE,shell=True)
#以下方式运行看不到报错
# return_cmd = subprocess.run('python',stdin=f,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)

return_cmd.stdin = 'print("hello laoteng")'
# return_cmd = 'print("hello laoteng")'
f2 = open("D:/ini.txt",'r')
cmd_output = return_cmd.stdout

print('f2:',f2.readlines())
print('cmd_output:',cmd_output)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值