Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中处理从文件读取的列表_Python_Python 2.7 - Fatal编程技术网

在Python中处理从文件读取的列表

在Python中处理从文件读取的列表,python,python-2.7,Python,Python 2.7,我是Python 2.7(和编程)的初学者。还有,这是我的第一个问题 我目前正在构建一个小型购物车应用程序。我将购物车值存储在txt文件中。如果运行脚本的用户已经在上一个会话的txt文件中保存了一个购物车,我希望程序提供继续使用购物车中的那些项目的报价 以下是我到目前为止的情况: my_file = open("cart.txt", "r") match = re.findall(r'%s' % enter_name, my_file.read()) my_file.close() #using

我是Python 2.7(和编程)的初学者。还有,这是我的第一个问题

我目前正在构建一个小型购物车应用程序。我将购物车值存储在txt文件中。如果运行脚本的用户已经在上一个会话的txt文件中保存了一个购物车,我希望程序提供继续使用购物车中的那些项目的报价

以下是我到目前为止的情况:

my_file = open("cart.txt", "r")
match = re.findall(r'%s' % enter_name, my_file.read())
my_file.close()
#using a regular expression here to find the person's cart by name
#in cart.txt. 
if match:
    print "Hello %s, welcome back." % enter_name
    print "Do you want to use your previous Shopping Cart?"
    continue_cart = raw_input("Type 'yes' or 'no' ")
    if continue_cart == "yes":
        with open("cart.txt", "r") as my_file:
            for line in my_file:
                line_list = line.split()
                print line_list
                #to be continued
最终的print语句基本上只是一个占位符,也是我查看结果的一种方式。我有点困在那里了。末尾带有for循环的代码基本上会生成各种行,每行都有一个列表。像这样

['Martin']
['Milk', '2']
['Apple', '4']
我想做的是“访问”代表产品和数量的值,然后将它们添加到购物卡类中。但是如何处理这个列表以便能够访问这些值呢


感谢您的帮助。谢谢。

正如e4c5所说,如果不使用更高级的概念(数据库,或者只使用简单的json或pickle),您将使自己更加困难

如果您只想直接使用纯文本文件来存储和加载值,那么不仅编写代码要困难得多(老实说,我已经编写了很多年了,我仍然不相信我做对了!),而且每个人(包括将来的你自己)都可以阅读代码。从经验来看,可维护性实际上是编程的圣杯。这就是我们使用python的原因

也就是说,我明白,你不是在试图构建一个完美的解决方案,而是在学习编程

也就是说,您的cart.txt可能如下所示:

Martin
Milk 2
Apple 4
Eva
Milk 1
然后,您的for循环看起来是这样的(例如,正如我所说的,这不是一种正确的方法,我认为它非常脆弱,而且有缺陷!)

编辑:

要演示这一切使用数据库是多么简单:

以下是保存购物车的完整示例:

import shelve

cart = shelve.open("cart.dat")
cart["Martin"] = {"Apple": 5, "Milk": 2}
cart["Eva"] = {"Milk": 1, "Cat": 4}
cart.close()
以及从DB加载购物车的完整示例:

import shelve
cart = shelve.open("cart.dat")

print(cart["Martin"])
print(cart["Eva"])

使用文本文件进行这类工作是非常困难的。请考虑使用RDBMS代替,西西里@ E4C5所说的!但是,如果使用文本文件,请考虑使用序列化库,如“代码> CSV ”、“代码>泡菜< /代码>或<代码> JSON<代码>,以转储和加载Python对象。我认为这不是一种最先进的方法。我一定会研究RDBMS的。非常感谢!这很有说服力。我不会再浪费时间构建依赖于.txt数据的代码,而是开始研究数据库。
import shelve
cart = shelve.open("cart.dat")

print(cart["Martin"])
print(cart["Eva"])