Python 子进程不工作~打开游戏脚本,带有菜单脚本
当我使用subprocess使用菜单脚本打开我的游戏脚本时,我遇到了一个奇怪的错误,即使我尝试重新安装python或pygame,似乎也无法修复。我是不是用错代码了 ~z~信息~ Python版本2.7.6 Pygame Verison 1.9.1 ~给定错误~Python 子进程不工作~打开游戏脚本,带有菜单脚本,python,python-2.7,pygame,Python,Python 2.7,Pygame,当我使用subprocess使用菜单脚本打开我的游戏脚本时,我遇到了一个奇怪的错误,即使我尝试重新安装python或pygame,似乎也无法修复。我是不是用错代码了 ~z~信息~ 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>
> > 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
Popen()
的第一个参数是['swfdump','main.py','-d']
,它将执行
名为swfdump
的东西,带有参数main.py-d
。我猜,你想要不同的东西。发件人:
args应该是程序参数序列,或者是单个字符串。默认情况下,如果args是序列,则要执行的程序是args中的第一项
尝试:
看看这是否有效。如果你真的想使用一个列表,你可以做['swfdump main.py-d',]
和shell=False
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()
pprocess = Popen('swfdump main.py -d', shell=True, stdout=PIPE)