在python程序中实现文件?

时间:2015-11-10 17:40:22

标签: python

 f=open('foo.dat','w+')
 rate=0
 print"Menu is:"
 print"""1. Indian
           2.Italian
           3.Chinese
           4.COntinential
           5.Starters and drinks"""
 hotel_food={1:'Indian',2:'Italian',3:'Chinese'}
 f.write(str(hotel_food))
 food=input("Enter the food type:")
 f.write(str(food))
 if(hotel_food.has_key(food)):
      print"Menu is:"
      print"""1. Roti with Curry
           2.South Indian Cuisines
           3.festival dishes
           4.sea food"""
      hotel_food1={1:'Roti with Curry',
           2:'South Indian Cuisines'}
      f.write(str(hotel_food1))
      fd=input("ENter the food type")
      f.write(str(fd))
      if(hotel_food1.has_key(fd)):
            rate=rate+1234
            print rate

  l=f.write(str(rate))

  x=f.read(l)
  print x

 f.close()

该程序允许用户输入他们想要的食物类型和子类型。之后计算账单或费率。

运行程序时,错误为:x=f.read(l)
TypeError:需要一个整数

但是当我进入时:x=f.read(str(l))
同样的错误来了:x=f.read(str(l))
TypeError:需要一个整数。

这里,即使菜单有5个案例,也就是用咖喱选择印度食品和烤肉,只显示一个案例。如果这是正确的,我将完成其余的工作。

这是在python中实现文件的正确方法吗?我无法将任何内容写入档案。

1 个答案:

答案 0 :(得分:1)

您的问题出在此处:x=f.read(l)

当您将单个参数传递给read()时,是期望值和整数(读取IIRC的字节数)。

使用不带参数的x=f.read()来读取文件中的所有数据。

另外l=f.write(str(rate))也是不必要的。只需调用f.write(str(rate))无需存储返回值,除非您预计会出现问题。

编辑:我有一些建议:使用字符串而不是字典和字典的键。这种方式raw_input()将提供您可以直接使用的密钥。

此外,您经常阅读同一文件的写作,这会弄乱您的阅读。有关文件的更多pythonic处理,请参阅here。我建议封装你的读取并以这种方式编写。

如果您只想检查是否已将数据写入文件,只需使用f.write(data)假设它有效,除非它引发错误。查看我的回答{{3} }

我不完全确定应该发生什么,但这是我最好的猜测

f=open('foo.dat','w+')
rate=0
print"Menu is:"
print"""1. Indian
        2.Italian
        3.Chinese
        4.COntinential
        5.Starters and drinks"""
hotel_food={'1':'Indian','2':'Italian','3':'Chinese'}
f.write(str(hotel_food))
food=raw_input("Enter the food type: ")
f.write(str(food))
if(food in hotel_food):
    print"Menu is:"
    print"""1. Roti with Curry
    2.South Indian Cuisines
    3.festival dishes
    4.sea food"""
    hotel_food1={'1':'Roti with Curry', '2':'South Indian Cuisines'}
    f.write(str(hotel_food1))
    fd=raw_input("ENter the food type: ")
    f.write(str(fd))
    if fd in hotel_food1:
        rate=rate+1234
        f.write(str(rate))
        x=f.read()
        print x

f.close()

希望这有帮助!