我有一个执行以下操作的程序。
python 1.txt apple 5 python 1.txt orange 18
apple : 5 orange : 18
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()
答案 0 :(得分:0)
一些建议:
阅读整个文本文件并创建一个 - >的字典。对。这应该是这样的:
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
将此功能集成到现有解决方案中应该是相对基础的。
答案 1 :(得分:0)
如果我理解正确你可以试试这个:
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()
它假设您在python文件所在的目录中有txt文件1.txt
(让我们称之为your_app.py
)并且您以这种方式运行程序:
python your_app.py 1.txt apple 5
您可以复制并粘贴代码并运行它。它正在发挥作用。