Python子进程和raw_input

时间:2014-07-01 17:38:36

标签: python subprocess raw-input

好的,谢谢大家的帮助。我是第二个问题。我在观看视频流时想要聊天,并且可以使用irc。服务器为irc.twitch.tv,频道与livestreamer名称相同。当我尝试这段代码时,它给了我错误。

# -*- 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 livestreams,我想做脚本,询问livestreamer名称,然后发送命令到终端。 Livestreamer命令就像

livestreamer twitch.tv/user best  

所以脚本必须添加&#34; twitch.tv /&#34;在livestreamer命令和&#34; best&#34;用户之后。 我的代码如下:

# -*- 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 个答案:

答案 0 :(得分:2)

您需要将"twitch.tv/"与用户名连接起来,因此最后一行应为

host = subprocess.Popen(['livestreamer', 'twitch.tv/'+user, 'best'], stdout=subprocess.PIPE).communicate()[0]

另请注意,关键字(name=value)参数不应该在等号周围确实有空格,以便与PEP 8中的Python样式指南保持最佳一致

答案 1 :(得分:1)

您的子流程线正在发送此命令:

livestreamer twitch.tv/ user best  

这将以您的示例形式开始一个过程:

subprocess.Popen(['livestreamer', 'twitch.tv/%s' % user, 'best'], stdout = subprocess.PIPE).communicate()[0]