使用for循环时,Txt文件行会相互覆盖

时间:2017-01-12 19:30:50

标签: python dictionary for-loop text-files overwrite

所以我创建了一个使用txt文件存储数据的股票文件系统。当库存水平低于某个值时,我想将这些产品插入单独的txt文件中。每当我这样做时,文件只有最后一个产品的数据,因为每次循环运行时,下一个产品的数据会覆盖以前产品的数据。

编辑:我应该提一下,我使用字典作为数据源,这是每个值,如SLref被分配给

以下是代码:

with open("Under the Reorder Level.txt", "r+") as u:
            for item in restockItem:
                while count < len(restockItem):

                    u.write(gtin)
                    u.write(' ')

                    product = str(restockItem[count])
                    u.write(product)
                    u.write(' ')

                    SLref = restockItemStock[count]
                    stocklevel = str(restockItemStock[count]))
                    u.write(stocklevel)
                    u.write(' ')

                    RLref = restockItemReorder[count]
                    reorderlevel = str(restockItemReorder[count])
                    u.write(reorderlevel)
                    u.write(' ')

                    TLref = restockItemTarget[count]
                    targetlevel = str(restockItemTarget[count])
                    u.write(targetlevel)

                    u.write(' ')
                    u.write('£')
                    u.write(' ')

                    Pref = restockItemPrice[count]
                    price = str(restockItemPrice[count])
                    u.write(price)

                    u.write('\n')

                    count = count + 1
                    print (count)
                u.close()

txt文件中的输出显示为:

“09876545门票6 10 50£100”

何时应阅读:

“12345670 HairBrush 17 10 50£1

10101018 PhotoFrame 11 10 50£15

09876545门票6 10 50£100“

编辑NO.2: 每次运行代码时,可能会有不同的库存水平,库存水平下的一些新项目或不再存储在库存水平下的项目。如果这些项目不再低于库存水平,我不希望将它们写入此文件。因此,我希望每次在写入文件之前清除该文件。 在该代码块之前检测到库存水平下的项目,然后将其放入上面使用的名为“RestockItem”的列表中。 我理解你打开文件的不同方式,我只是不确定我现在做错了什么。我以前的错误已经修复,但是在使用此循环之前清除文件时,我无法获得正确的输出。

open("Under the Reorder Level.txt", 'w+').close()
        with open("Under the Reorder Level.txt", "a+") as u:
            for item in restockItem:
                while count < len(restockItem):

                    u.write(gtin)
                    u.write(' ')open("Under the Reorder Level.txt", 'w+').close()
        with open("Under the Reorder Level.txt", "a+") as u:
            for item in restockItem:
                while count < len(restockItem):

                    u.write(gtin)
                    u.write(' ')
#carries on.......

1 个答案:

答案 0 :(得分:1)

更改标记以将文件从r+打开到a+。这意味着从文件末尾开始写作和阅读。

Here is a difference between them explained on SO

如果您想完全覆盖该文件,则可以使用&#39; w&#39;选项,写作。 Here is a list of flags explained