python 交互式shell,python脚本和shell脚本
考虑这样一个问题,有hello.py脚本,输出"你好,世界!";有TestInput.py脚本,等待用户输入,然后打印用户输入的数据。那么,怎么样把hello.py输出内容发送给TestInput.py,最后TestInput.py打印接收到的"你好,世界!"。下面来逐步讲解一下壳的交互方式。
hello.py代码如下:
#!/usr/bin/python
打印"你好,世界!TestInput.py代码如下:
#!/usr/bin/python
str=raw_input()
打印( input string is :% s % str 1.os.system(cmd)
这种方式只是执行壳命令,返回一个返回码(0表示执行成功,否则表示失败)
retcode=OS。系统(python你好。py’)
print( retcode是:% s % retcode );输出:
你好,世界!
2.os.popen(cmd)邮编:0
执行命令并返回该执行命令程序的输入流或输出流。该命令只能操作单向流,与壳命令单向交互,不能双向交互。
返回程序输出流,用富普特变量连接到输出流
fou put=OS。popen(‘python你好。py’)
result=fouput.readlines()
打印( result is :% s % result );输出:
结果是:[你好,世界!\n]返回输入流,用最终产量变量连接到输出流
fin put=OS。popen( python testinput。py , w )
finput.write(howareyou\n )输出:
输入字符串:你好3.利用subprocess模块
subprocess.call()类似os.system(),注意这里的" shell=True "表示用壳执行命令,而不是用默认的os.execvp()执行。
f=call(pythonhello.py ,shell=True)
打印函数输出:
你好,世界!
0
子流程。波本()利用打开进程文件指针可以是实现双向流的通信,可以将一个程序的输出流发送到另外一个程序的输入流。
波本()是打开进程文件指针类的构造函数,交流()返回元组(标准输出数据,标准错误数据).
p1=Popen(pythonhello.py ,stdin=None,stdout=PIPE,shell=True)
p2=Popen(pythonTestInput.py ,stdin=p1.stdout,stdout=PIPE,shell=True)
printp2.communicate()[0]
#其他方式
#printp2.stdout.readlines()输出:
输入字符串:你好你好,世界!整合代码如下:
#!/usr/bin/python
进口货
fromsubprocessimportPopen,管道,调用
retcode=OS。系统(python你好。py’)
print( retcode是:% s % retcode );
fou put=OS。popen(‘python你好。py’)
result=fouput.readlines()
打印( result is :% s % result );
fin put=OS。popen( python testinput。py , w )
finput.write(howareyou\n )
f=call(pythonhello.py ,shell=True)
打印函数
p1=Popen(pythonhello.py ,stdin=None,stdout=PIPE,shell=True)
p2=Popen(pythonTestInput.py ,stdin=p1.stdout,stdout=PIPE,shell=True)
printp2.communicate()[0]
#其他方式
#printp2.stdout.readlines()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。