作者yungyuc (酷狗喵千代)
看板Python
标题Re: [问题] os.system输入输出
时间Thu Aug 14 21:28:05 2008
※ 引述《Arton0306 (Ar藤)》之铭言:
: ※ 引述《liangjr (aaa)》之铭言:
: : ※ 引述《Arton0306 (Ar藤)》之铭言:
: : : 如果我有一程式gcd.exe
: : : 执行後使用者输入两数字enter後输出其gcd 接着关闭
: : : 这样是否有办法利用os.system或其它函式
: : : 让python中 两变数x,y当输入
: : : 而z储存输出
: : : (用档案当中介 利用管线来执行 "之外的其它方法")
: : 类似这样?
: : def gcd(x, y):
: : gcd = subprocess.Popen("gcd.exe",
: : stdin=subprocess.PIPE,
: : stdout.subprocess.PIPE)
: : gcd.stdin.write(x)
: : gcd.stdin.write(y)
: : return gcd.stdout.read()
: 对对 就是这个 感谢!
:
: 不过stdin.write不知怎麽用
: 我查文件http://docs.python.org/lib/node532.html
: 改成用communicate可以跑
:
: 程式码如下
: import subprocess
:
: def twosum(x, y):
: twosum = subprocess.Popen("twosum.exe",
: stdin=subprocess.PIPE,
: stdout=subprocess.PIPE)
: return twosum.communicate(str(x)+' '+str(y))
:
: a=10
: b=23
: k=twosum(a,b)
: print 'k='+k[0]
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 220.135.138.142
: ※ 编辑: Arton0306 来自: 220.135.138.142 (08/13 16:13)
: 推 yungyuc:这还是用到了管线 08/13 18:35
: → Arton0306:主要是不希望有档案当中介 所以ok 08/13 18:40
: 推 legnaleurc:pipe和档案是两回事吧 08/13 22:31
: → Arton0306:我是指不知l大的方法时 我可以用档案和pipe做出类似效果 08/14 06:23
: → Arton0306:如twosum < input > output input存a,b ouput存k 08/14 06:25
: 推 legnaleurc:通常我会叫这个是 IO redirection ... 08/14 19:28
是的
在 command line 作 exe < input > output 通常是称为 I/O redirection
作 ls | grep "beat" 才叫作管线
两个都用到了管线,所以 A 君说 redirection 是管线也不能说错
有点混淆就是了
A 君有没有注意到你的程式里有个大大的 subprocess.PIPE?
所以你还是用到了管线
只不过是用 Python 进行控制,而不是用你的 shell 去控制而己
其实一开始看到你的文章时就在想「如果管线不能用那可难写了」 :p
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 164.107.170.191
1F:推 Arton0306:对喔 我记错了 XDDDD 08/14 22:46