变量名似乎被覆盖了

时间:2014-07-28 05:34:11

标签: python file

所以我正在为我的游戏编写一个非常简单的保存系统,并且它一直将文件名保存为变量名称(在添加“:MinecraftText-turePack.txt”之前)。我通过它运行了一个打印(在名称更改后),并且变量已更改,但它仍然给了我错误的文件名。有什么想法吗?感谢。

if response == "save_pack":
    print("What do you want to call it?")
    name = input()
    name = name + ":MinecraftText-turePack.txt"
    pack = open(name, "w")
    for each in inventory:
        name, amount, recipe = each
        pack.write(name)
   pack.close()

编辑:可能是另一个重要细节;它正在创建一个文件,名称错误

2 个答案:

答案 0 :(得分:2)

从用作函数的print语句中我假设我们正在使用Python 3.移动提示是可选的,但删除了一行代码。另外,为了清楚起见,我已将第二个name变量重命名为pname,并为名为fname的文件名启动了一个新变量。这样你可以检查每一个。同时尝试取出文件名中的冒号(正如迈克尔建议的那样)

if response == "save_pack":
    name = input("What do you want to call it?\n")
    fname = name + "-MinecraftText-turePack.txt"
    pack = open(fname, "w")
    for each in inventory:
        pname, amount, recipe = each
        pack.write(pname)
   pack.close()

虽然这个答案稍微清楚一点,但你的原始示例从linux提示符运行就好了。大多数非unix系统不喜欢文件名中的:。以下是Windows的background

答案 1 :(得分:1)

我假设你正在使用Windows。你的文件名中有一个冒号(:)。这是一个保留字符,实际上指定了一个文件流。

File Streams

尝试在名称中使用其他字符。