如何编辑文本文件中特定行的一部分

时间:2013-12-30 16:07:21

标签: python file text

我有一份库存清单。 例如:

1003,表,12.99,19.99,45

1004,chair,3.99,9.99,32

它的格式是: 产品代码,名称,成本价格,价格,数量

如何在下订单时更新数量 - 减少1等?

这是我到目前为止的代码:

def stockupdate():
itemname = input("Enter product name: ")
f = open('Stockinventory.txt', 'r') 
search = f.readlines() 
f.close() 
for line in search:
    lst = line.split(", ") #split 
    if str(itemname) == lst[1]: #Check to see if number entered is first parameter on list
        print ("SIN: %s" % lst[0])
        print ("Itemname: %s" % lst[1])
        print ("Retail price: %s" % lst[2])
        print ("Costprice: %s" % lst[3])
        print ("Quantity Available: %s" % lst[4])

上面的第一部分只是向用户显示当前持有的产品信息

choice = input("Would you like to update quantity? y/n")
if choice == 'y':
    newquantity = input("Enter new quantity: ")

    with open('Stockinventory.txt', 'r') as f:
        data = f.readlines()
    f.close()
    for line in data:
        lst = line.split(", ")
        if str(itemname) == lst[1]:
            lst[4] = str(newquantity)
            lst = line.join(", ")
            f = open('Stockinventory.txt', 'w')
            if itemname != lst[1]:
                f.write(line)
            else:
                f.write(lst)

目前,我总是最终删除文本文件中已有的内容

感谢您的时间,感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我会使用cvs模块阅读它。 然后将所有数据放在dict中或将其放入pandas数据帧中,

在任何一种情况下,您都可以操纵内容。

完成后,您可以将数据写回磁盘

如果你想按自己的方式去做,你应该在循环外打开和关闭文件,并写下所有行,替换你想要改变的行。我的经验是,这种方法太难了,特别是如果你想操纵更复杂的项目。