Python - 搜索文本文件

时间:2016-10-29 14:29:07

标签: python python-3.x

我正在制作一个程序,要求我迭代一个文本文件并完成一个总和,任何低于所需值的值都需要添加到发票文件中。但是,我创建的代码只写了一个产品而不是每个需要重新进货的产品。

这是主要代码:

def createRestockFile(productName,minimumStockLevel,currentStock, amountNeeded,costToUs):
    with open("invoice.txt", 'r+') as f:
        f.write("#Product Name\tMinimum Stock Level\tCurrent Stock Level\tAmount Needed\tCost To Re-Order \n")
        f.write("%s\t%s\t%s\t%s\t%s" % (productName,minimumStockLevel,currentStock,amountNeeded,costToUs))

def checkStock():
    with open("stock.txt",'r+') as f:
        for line in f:
            if int(line.split()[2]) < int(line.split()[5]):
                amountNeeded = int(line.split()[5]) - int(line.split()[2])
                total = '£{:,.2f}'.format(float(line.split()[3])*amountNeeded)
                createRestockFile(line.split()[1],line.split()[5],line.split()[2],amountNeeded,total)
                print(line.split())


def startProgramme():
    yesInput = ["yes", "yes please", "y"]
    noInput = ["no","nope","n"]
    print("Welcome to Sean's Stock re-order programme")
    choice = input("Would you like to check which products need re-ordering ")
    if choice in yesInput:
        checkStock()
    elif choice in noInput:
        import time
        print("Thank you for using Sean's re-order programme")
        print("Ending Programme")
        time.sleep(0.6)
        exit()



startProgramme()

以下是发票档案:

#Product Name   Minimum Stock Level Current Stock Level Amount Needed   Cost To Re-Order 
Wispa   16  6   10  £3.4003.40

以下是库存文件:

45678948    Twix    12  0.42    0.65    25  50  
12345670    Wispa   6   0.34    0.85    16  40  
26073125    Crunchie    37  0.37    0.69    8   43      
24785122    Flake   47  0.24    0.65    10  35  
45678914    Snickers    42  0.46    0.75    8   32      
78945617    Maltesers   78  0.32    0.56    12  65      
85146945    Galaxy  57  0.32    0.76    9   54  

使用stock文件中的给定值,程序应该将twix和wispa添加到发票文件中,但是只添加了wispa。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您需要更改打开invoice.txt的模式。对于该功能,您需要将其从r+更改为a+;它正在编写twix发票,然后将其删除,然后写下wispa。

答案 1 :(得分:0)

以下代码适用于我。

我已将您打开发票文件的代码中的位置移动到主程序中,以便您可以保持打开模式&#34; w +&#34;。另请注意,我编写的代码只能将输入行拆分一次(节省时间并缩短代码)

sum