使用变量名

时间:2015-08-12 12:24:24

标签: python file

我实际上正在尝试编写一种“角色游戏”,实际上我陷入了创建新角色文件的过程中。我实际上是想这样做,如果我调用一个字符文件,系统会检查它是否存在,如果没有,它会创建它。这是代码,只是尝试它会创建一个名为(charactername).char的空文件:

import os
def call_char(name):
file = "%s.char" %name
if os.path.exists(file):
    print ("file loaded")
    open_char(file)
else:
    print ("creating new character")
    new_char(file)

"""creates a new character file"""
def new_char(file):
    print ("Character %s."%file)
    file(file, "w")

call_char("Volgrand")

但是,我在执行call_char("Volgrand")

时遇到此错误
  File "E:\python\Juego foral\test.py", line 51, in new_char
    file(file, "w")
TypeError: 'str' object is not callable"

我虽然调用变量file(一个字符串)应该可以创建新文件。

2 个答案:

答案 0 :(得分:1)

Python 2.x中有一个名为file的函数。但是,通过命名函数file参数,可以隐藏该函数,使其无法访问。想象一下,你打电话给new_char("foo"),然后问题就变成:

"foo"("foo", "w")

这显然完全没有任何意义。相反,你应该:

  1. 将参数重命名为更合理的filename;和
  2. 使用open上下文管理器来打开文件(根据文档open首选file,并使用with上下文管理器表单表示您不要需要明确close文件)。
  3. 这会给:

    def new_char(filename):
        """creates a new character file"""
        print ("Character %s." % filename)
        with open(filename, "w"):
            pass
    

    请注意,我还将文档字符串移动到它所属的函数中。

答案 1 :(得分:1)

你的问题在这里:

def new_char(file):
    print ("Character %s."%file)
    file(file, "w")

您正在命名函数参数file,然后尝试使用内置的file打开文件。首先,你不能这样做:)。你不应该为你的变量使用内置函数的名称,如果你想使用内置函数,尤其是;但实际上,无论如何都不要这样做。其次,请使用open,而不是file

固定代码:

def new_char(filename):
    print ("Character %s." % filename)
    open(filename, "w")

还有其他问题,例如您没有在那里保存文件句柄,但这可能是另一个问题。