用python在文本文件中写入项

2024-10-05 14:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序可以完成以下任务。你知道吗

  1. 输入一个输入
python 1.txt apple 5
python 1.txt orange 18
  1. 它将在文本文件中写入项目和金额 修改文本文件的示例
apple : 5
orange : 18
  1. 它也在检查是否有重复,然后将金额与现有金额相加,如有-
python 1.txt apple 5
apple : 10
orange : 18

问题:如果该项在文本文件中不存在或不重复,请在文本文件中添加该项。目前这不起作用

这是我写的-

import sys

def maj(texte, item, nombre):
    with open(texte, "r") as f_in:
        lecture = f_in.readlines()
        with open(texte, "w") as ouvrir:
            for line in lecture:
                line = line.strip("\n")
                mot, chiffre = line.split(" : ")[0].strip(" "), int(line.split(" : ")[1].strip(" "))
                if mot == item:
                    ouvrir.write("%s : %s" "\n" % (item, str(chiffre + int(nombre))))
                    ouvrir.close()
                else:
                    ouvrir.write("%s : %s" "\n" % (mot, chiffre))
                    ouvrir.close()
def main():
    entree = sys.argv[1]
    item = sys.argv[2]
    nombre = sys.argv[3]
    choix = str(entree)
    texte = choix.strip("[']")
    maj(texte, item, nombre)

if __name__ == "__main__":
    main()

Tags: intxtapplesyslineitem金额strip
2条回答

如果我理解正确,你可以试试这个:

import sys


def maj(texte, item, nombre):
    lecture = []
    with open(texte, "r") as f_in:
        lecture = f_in.readlines()

    if len(lecture) == 0:
        with open(texte, "w") as ouvrir:
            ouvrir.write("%s : %s" "\n" % (item, str(nombre)))
            ouvrir.close()
            return
    else:

        is_present = False
        for e in lecture:
            if item in e:
                is_present = True

        if not is_present:
            with open(texte, "a") as ouvrir:
                ouvrir.write("%s : %s" "\n" % (item, str(nombre)))
                ouvrir.close()

        else:
            for i in range(0, len(lecture)):
                line = lecture[i].strip("\n")
                mot, chiffre = line.split(" : ")[0].strip(" "), int(line.split(" : ")[1].strip(" "))
                if mot == item:
                    lecture[i] = "%s : %s" "\n" % (item, str(chiffre + int(nombre)))

            with open(texte, "w") as ouvrir:
                for line in lecture:
                    ouvrir.write(line)
                ouvrir.close

def main():
    entree = sys.argv[1]
    item = sys.argv[2]
    nombre = sys.argv[3]
    choix = str(entree)
    texte = choix.strip("[']")
    maj(texte, item, nombre)


if __name__ == "__main__":
    main()

它假定您的txt文件1.txt与python文件位于同一目录中(我们称之为your_app.py),并且您以以下方式运行程序:

python your_app.py 1.txt apple 5

您可以复制粘贴代码并运行它。它在工作。你知道吗

几点建议:

读取整个文本文件并创建一个->;对的dict。应该是这样的:

kv_pairs = {}
for line in file:
    line = line.strip('\n')
    token, value = line.split(' : ')
    kv_pairs[token] = int(value) 

然后添加新键/新值:

if new_key not in kv_pairs:
    kv_pairs[new_key] = 0
kv_pairs[new_key] += new_value

然后将值再次写入文件:

with open(filename, 'w') as fp:
    for k, v in kv_pairs.items():
        # format and print

将其集成到现有解决方案中应该是比较基本的。你知道吗

相关问题 更多 >