Python 子进程与原始输入
好的,谢谢大家的帮助。我还有第二个问题。我想在观看直播的时候聊天,这可以通过IRC实现。服务器是 irc.twitch.tv
,频道名和直播者的名字是一样的。当我尝试这个代码时,出现了错误。
# -*- coding: latin-1 -*-
import subprocess
print(35*"+")
name = raw_input("Livestreamer name\n")
hostVideo = subprocess.Popen(['livestreamer', 'twitch.tv/'+name, 'best'], stdout = subprocess.PIPE).communicate()[0]
hostIrssi = subprocess.Popen(['irssi --connect=irc.twitch.tv --password=oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --nick=nickname'], stdout = subprocess.PIPE).communicate()[0]
print hostVideo
print hostIrssi
这是我收到的错误信息
Traceback (most recent call last):
File "Livestreamer.py", line 7, in <module>
hostIrssi = subprocess.Popen(['irssi --connect=irc.twitch.tv --password=oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --nick=nickname'], stdout = subprocess.PIPE).communicate()[0]
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
另外,如果可以的话,告诉我怎么才能自动加入正确的频道。
我之前的帖子
我喜欢看Twitch的直播,我想写一个脚本,让它询问直播者的名字,然后把命令发送到终端。直播者的命令是这样的:
livestreamer twitch.tv/user best
所以脚本必须在直播者命令后加上“twitch.tv/”,在用户名后加上“best”。我的代码看起来是这样的:
# -*- coding: latin-1 -*-
import subprocess
user = raw_input("Livestreamers name:\n")
livestreamer = "livestreamer twitch.tv/"
host = subprocess.Popen(['livestreamer', 'twitch.tv/', user, 'best'], stdout = subprocess.PIPE).communicate()[0]
print host
输出是
livestreamer: error: unrecognized arguments: best
如果有人知道哪里出错了,我会非常感激。同时抱歉我的英语不好。:)
2 个回答
1
你的子进程命令是这样的:
livestreamer twitch.tv/ user best
这条命令会启动一个进程,像你给的例子那样:
subprocess.Popen(['livestreamer', 'twitch.tv/%s' % user, 'best'], stdout = subprocess.PIPE).communicate()[0]
2
你需要把 "twitch.tv/"
和用户名连接在一起,所以你最后的代码应该是
host = subprocess.Popen(['livestreamer', 'twitch.tv/'+user, 'best'], stdout=subprocess.PIPE).communicate()[0]
另外,注意一下,关键字参数(name=value
)在等号周围最好不要有空格,这样更符合Python的风格指南,具体可以参考PEP 8