Python-Multiple在txt文件

时间:2017-06-17 04:08:34

标签: python file-writing

我有这样的代码:

def export_devices():
        code = input("Enter device code: ")
        amount = int(input("How many devices you export: "))
        with open("uredjaji.txt", "r+") as f:
            current_position = 0
            line = f.readline()
            while line:
                if line[:len(code) + 1] == code + ":":
                    line = line.rstrip()
                    amount_index = line.rfind(":") + 1
                    current_amount = int(line[amount_index:])           
                    if amount > current_amount:
                        print("There no that many devices in stock...")
                        return
                    remaining_content = f.read()
                    f.seek(current_position)
                    f.truncate()
                    line = line[:amount_index] + str(current_amount - amount) + "\n"
                    f.write(line)
                    f.write(remaining_content)
                    return
                current_position = f.tell()
                line = f.readline()
                with open('transakcije.txt','a') as transactions:
                    date = datetime.date.today().strftime('%d.%m.%Y.')
                    transactions.write("1" + ":" + str(amount) + ":" + "export" + ":" + str(date) + ":" + "username" + "\n")
        print("Error device code: {}".format(code))

现在我希望我的“transakcije.txt”看起来像这样:

1:3:iznos:17.06.2017.:username

但它总是追加三次相同的线。任何其他类型的缩进都不会附加。

另外,我的uredjaji.txt文件如下所示:

tw004:Galaxy S5:Samsung:Mobilni telefon:3
tw002:Galaxy S6:Samsung:Mobilni telefon:1
tw001:Huawei P8:Huawei:Mobilni telefon:1
tw003:Huawei P9:Huawei:Mobilni telefon:100998

P.S:“用户名”应该是另一个函数的变量,所以如果有人可以帮助我如何在这个文件中编写该变量,我将非常感谢。 :)

1 个答案:

答案 0 :(得分:0)

当您打开文件时,您会读取一行,然后进入while循环,查看是否存在line。如果你没有得到输入代码的匹配,那么我想,尝试用f.tell()重新定位文件指针,但你不进行搜索。此后,您再次读取该文件并写入transakcije.txt。遗憾的是,原始的while循环仍在播放中,因此您将多次编写transakcije.txt次 目前尚不清楚您使用此代码尝试实现的目标,但您需要坐下来从头开始重新思考。
如果它是某种库存报告/补货程序,我无法帮助认为数据库(sqlite3作为一个简单的启动程序)更适合将ascii文件分开。