子进程无法正常工作〜打开带有菜单脚本的游戏脚本

时间:2014-01-22 05:37:06

标签: python python-2.7 pygame

当我使用子进程使用我的菜单脚本打开我的游戏脚本时,我得到一个奇怪的错误,即使我尝试重新安装python或pygame,我似乎无法修复。我是否错误地使用了代码?

〜信息〜 Python版本2.7.6 Pygame Verison 1.9.1

〜错误给出〜

> > Traceback (most recent call last):   File "C:\Users\Jason\Desktop\Maze\menu.py", line 22, in <module>
>     subprocess = Popen(['swfdump', 'main.py', '-d'], stdout=PIPE)   File "C:\Python27\lib\subprocess.py", line 709, in __init__
>     errread, errwrite)   File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
>     startupinfo) WindowsError: [Error 2] The system cannot find the file specified

〜我正在使用我的菜单代码〜

    import pygame
import dumbmenu as dm
pygame.init()
from subprocess import Popen, PIPE

# Just a few static variables
red   = 255,  0,  0
green =   0,255,  0
blue  =   0,  0,255

size = width, height = 340,240  
screen = pygame.display.set_mode(size)
screen.fill(blue)
pygame.display.update()
pygame.key.set_repeat(500,30)

choose = dm.dumbmenu(screen, [
                        'Start Game',
                        'Quit Game'], 64,64,None,32,1.4,green,red)

if choose == 0:
    pprocess = Popen(['swfdump', 'main.py', '-d'], stdout=PIPE)
    stdout, stderr = process.communicate()
elif choose == 1:    
    pygame.quit()
exit()

2 个答案:

答案 0 :(得分:0)

Popen()的第一个参数是['swfdump', 'main.py', '-d'],它将执行 带有参数swfdump的名为main.py -d的内容。我怀疑,你想要一些与众不同的东西。来自the fine documentation

  

args应该是一系列程序参数或者是一个单独的字符串。默认情况下,如果args是序列,则要执行的程序是args中的第一项。

答案 1 :(得分:0)

尝试:

pprocess = Popen('swfdump main.py -d', shell=True, stdout=PIPE)

看看是否有效。如果您真的想使用列表,我可以考虑使用['swfdump main.py -d',]shell=False