我实际上正在尝试编写一种“角色游戏”,实际上我陷入了创建新角色文件的过程中。我实际上是想这样做,如果我调用一个字符文件,系统会检查它是否存在,如果没有,它会创建它。这是代码,只是尝试它会创建一个名为(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
(一个字符串)应该可以创建新文件。
答案 0 :(得分:1)
Python 2.x中有一个名为file
的函数。但是,通过命名函数file
的参数,可以隐藏该函数,使其无法访问。想象一下,你打电话给new_char("foo")
,然后问题就变成:
"foo"("foo", "w")
这显然完全没有任何意义。相反,你应该:
filename
;和open
上下文管理器来打开文件(根据文档open
首选file
,并使用with
上下文管理器表单表示您不要需要明确close
文件)。这会给:
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")
还有其他问题,例如您没有在那里保存文件句柄,但这可能是另一个问题。