我的代码 Vincible.py 位于
C:\Users\Nick\Desktop\Vincible
我正在尝试访问位于
C:\Users\Nick\Desktop\Vincible\Audio
我整理了:
#!C:\Python33\python.exe import sys, pygame, os.path print("Loading...") pygame.mixer.pre_init(44100, -16, 2, 2048) try: pygame.mixer.music.load(os.path.join('Audio', 'title.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun1.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun2.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun3.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun4.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun5.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun6.midi')) pygame.mixer.music.load(os.path.join('Audio', 'echostheme')) pygame.mixer.music.load(os.path.join('Audio', 'town1.midi')) pygame.mixer.music.load(os.path.join('Audio', 'town2.midi')) pygame.mixer.music.load(os.path.join('Audio', 'town3.midi')) except: raise UserWarning("Could not load or play soundfiles in 'Audio' folder") pygame.init() size = width, height = 580, 444 screen = pygame.display.set_mode(size) print("Loaded!") while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.mixer.Sound('title.midi').play()
运行它后,它运行了 except 位,我正在努力弄清楚如何成功地做到这一点。我通常不会从 Python 中的不同路径访问文件,因此非常感谢您的帮助。
编辑:根据巧妙的要求,我从我的代码中删除了 try/except 。这是新代码:
#!C:\Python33\python.exe import sys, pygame, os.path print("Loading...") pygame.mixer.pre_init(44100, -16, 2, 2048) pygame.init() pygame.mixer.music.load(os.path.join('Audio', 'title.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun1.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun2.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun3.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun4.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun5.midi')) pygame.mixer.music.load(os.path.join('Audio', 'dun6.midi')) pygame.mixer.music.load(os.path.join('Audio', 'echostheme')) pygame.mixer.music.load(os.path.join('Audio', 'town1.midi')) pygame.mixer.music.load(os.path.join('Audio', 'town2.midi')) pygame.mixer.music.load(os.path.join('Audio', 'town3.midi')) size = width, height = 580, 444 screen = pygame.display.set_mode(size) print("Loaded!") while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.mixer.Sound('title.midi').play()
这次推出:
Traceback (most recent call last): File "C:\Users\Nick\Desktop\Vincible\Vincible.py", line 8, in <module> pygame.mixer.music.load(os.path.join('Audio', 'title.midi')) pygame.error: Couldn't open 'Audio\title.midi'
该文件没有损坏,并且确实在
Vincible\Audio
但它仍然返回此错误。我想这与我的使用有关
os.path.join
但话又说回来,我是 os.path 模块的新手。很感谢任何形式的帮助。
正如 Fredrik 建议的那样,我尝试将我的代码修改为:
#!C:\Python33\python.exe
import sys, pygame, os.path
print("Loading...")
pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.init()
def load(midi_file):
module_directory = os.path.dirname(__file__)
filename = os.path.join(module_directory, 'Audio', midi_file)
pygame.mixer.music.load(filename)
load("title.midi")
size = width, height = 580, 444
screen = pygame.display.set_mode(size)
print("Loaded!")
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
titlemusic.play(-1)
注意:我删除了所有其他 .midi 文件以使代码更小/更具可读性,在问题解决后,它们将以正确的方式添加。
运行时,解释器在第 13 行(我加载“title.midi”)引发另一个 pygame.error “无法打开文件”。任何帮助表示赞赏。