当我使用子进程使用我的菜单脚本打开我的游戏脚本时,我得到一个奇怪的错误,即使我尝试重新安装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()
答案 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
。