使用唯一参数在文件中写入新行

时间:2015-12-03 22:44:00

标签: python list file

namestaj = open("komad_namestaja.txt", "r")
oldNamestaj = namestaj.read()
namestaj.close()

kategorija = open("kategorija_namestaja.txt", "r")
oldKategorija = kategorija.read()
kategorija.close()

sifra = input("\nUneti šifru entiteta >> ")
naziv = input("Uneti naziv entiteta >> ")
boja = input("Uneti boju entiteta >> ")
kolicina = input("Uneti količinu entiteta u magacinu >> ")
cena = input("Uneti cenu entiteta >> ")
kategorija = input("Uneti kategoriju entiteta >> ")
opis = input("Uneti opis entiteta >> ")

namestaj = open("komad_namestaja.txt", "w")
namestaj.write(oldNamestaj)
dataNamestaj = "\n" + sifra + "|" + naziv + "|" + boja + "|" + kolicina + "|" + cena + "|" + kategorija
namestaj.write(dataNamestaj)
namestaj.close()

kategorija_fajl = open("kategorija_namestaja.txt", "w")
kategorija_fajl.write(oldKategorija)
dataKategorija = "\n" + kategorija + "|" + opis
kategorija_fajl.write(dataKategorija)
kategorija_fajl.close()

我需要在文件中写入新行,并且必须包含唯一参数。 sifra和kategorija是唯一的参数,所以如果存在一些带有该名称程序的参数会弹出警告(sifra是INT,kategorija是STR)。 还有什么是改善当前代码的最佳方法?

1 个答案:

答案 0 :(得分:0)

您需要解析文件以了解其内容并防止重复字段,因此可以重写此代码,

namestaj = open("komad_namestaja.txt", "r")
oldNamestaj = namestaj.read()
namestaj.close()

To,

sifra_in_file = set()
kategorija_in_file = set()
with open("komad_namestaja.txt", "r") as namestaj:
    for line in namestaj:
        line = line.trim()  # Remove trailing '\n'
        sifra, naziv, boja, kolicina, cena, kategorija = line.split('|')  # Assume no field has '|'
        sifra_in_file.add(sifra)
        kategorija_in_file.add(kategorija)

稍后,您可以检查从文件中读取的数据中是否有sifrakategorija

if kategorija in kategorija_in_file:
    # Print a warning