所以我目前正在使用“搁置”来保存我正在开发的游戏的游戏数据,但是当我使用pyinstaller将此游戏打包到exe中时,它将创建3个不同的文件,它们的名称相同但文件不同类型,即使在创建文件时也没有指定文件类型。
def save_game(yn):
if yn:
file = shelve.open('savegame', 'n')
file['map'] = map
file['objects'] = objects
file['player_index'] = objects.index(player) # index of player in objects list
file['stairs_index'] = objects.index(stairs) # same for the stairs
file['inventory'] = inventory
file['game_msgs'] = game_msgs
file['game_state'] = game_state
file['dungeon_level'] = dungeon_level
file.close()
这将创建没有文件类型的保存文件(效果很好!),但是以exe形式,当玩家死亡时会创建“ savegame.bak”,“ savegame.dir”和“ savegame.dat”。会先保存文件(如果没有保存文件)然后将其删除,因此您将无法访问已结束的游戏保存。
def player_death(player):
# the game ended!
global game_state
...
game_state = 'dead'
...
save_game(True)
os.remove('savegame')
简而言之,我只需要知道如何使os.remove行摆脱savegame,无论它是1个文件还是3个不同文件,都具有不同的文件类型。
答案 0 :(得分:0)
一种选择是使用pathlib
。
from pathlib import Path
for file in Path("/path/to/dir/with/saves").glob('savegame.*') :
file.unlink()
答案 1 :(得分:0)
如果您可以使用通配符表示它,那么glob模块适合您。
from glob import iglob
for file in iglob("savegame.*"):
os.remove(file)
注意:如果您知道只匹配少数几个文件,则可以安全地使用glob
而不是iglob
。如果您不知道要匹配多少个文件,通常应该使用iglob
来避免在内存中留下庞大的列表。