2015-02-11 71 views
0

下面是我为我的游戏清单使得代码:无法写入库存蟒蛇

def getInv(user): 
file = "%s.inv" % user 
dir = "inventories/" 
fp = "%s%s" % (dir,file) 
if not os.path.exists(dir): 
    os.makedirs(dir) 
if not os.path.isfile(fp): 
    bag = open(fp, "w") 
    bag.write("NULL\n") 
    bag.close() 

bag = open(fp, "r") 
baglines = bag.readlines() 
bag.close() 

bag = [] 

for line in baglines: 
    bag.append(line.replace("\n","")) 

if "NULL" in bag: 
    del bag[bag.index("NULL")] 

if len(bag) != 0:   
    return bag 
else: 
    return ["empty"] 

..所以就是这样。我遇到的问题是我无法写入硬文件。例如,如果我手动在特定用户的库存文件中写入某些内容,则在我调用其库存方法时,它会显示。但是,我似乎无法使用'giveItem'方法添加到库存中,我似乎无法弄清楚原因。

def giveItem(user, item): 
item = str(item) 
file = "%s.inv" % user 
dir = "inventories" 
fp = "%s%s" % (dir,file) 
if not os.path.exists(dir): 
    os.makedirs(dir) 
if not os.path.isfile(fp): 
    bag = open(fp, "w") 
    bag.write("NULL\n") 
    bag.close() 

bag = open(fp, "a") 
bag.write(item+'\n') 
bag.close() 
+0

我意识到当我粘贴代码时,我拧了缩进,请忽略它。 – 2015-02-11 23:58:25

+0

缩进是Python中的关键*,我们不能*忽略它*。请阅读http://StackOverflow.com/help/mcve,然后当你有一个最小的例子粘贴它,选择它并点击'{}'按钮或Ctrl-K。 – jonrsharpe 2015-02-12 00:01:03

回答

0

你在giveItemsfp变量不包括斜线,所以对于一个姓名的人士称,"Arman"用户,它会在当前目录中的文件夹"inventories""inventoriesArman.inv",而不是"Arman.inv",这是其中getInv会看起来。

与其使用字符串格式来手动构建完整路径,我建议使用专为此设计的os.path.joinfp = os.path.join(dir, file)