python – 追加到文件中的某个点,每次都增加一个值
发布时间:2020-12-20 13:51:22 所属栏目:Python 来源:网络整理
导读:我是编程新手.这是我的第一个“适当的”项目,将被其他人使用. 该程序询问各种问题,然后将新的商店条目写入文件.对于一个空文件,我有大部分工作,但成品需要在现有文件中的特定点插入条目. 2个问题令我困惑: 如何在“Back:”之前将新的商店条目插入到文件中,
我是编程新手.这是我的第一个“适当的”项目,将被其他人使用.
该程序询问各种问题,然后将新的商店条目写入文件.对于一个空文件,我有大部分工作,但成品需要在现有文件中的特定点插入条目. 2个问题令我困惑: 如何在“Back:”之前将新的商店条目插入到文件中,以及每次添加条目时如何将“InventoryLocation:”增加1 附加到的文件具有以下结构: # shop 1 SuperSpaceSquids: RewardType: playercommand PriceType: free Reward: - ewarp Shop-SuperSpaceSquids MenuItem: - type:SKULL_ITEM - playerhead:MHF_Squid - durability:3 - amount:1 - name:&5SuperSpaceSquids - 'lore:&6&o"Squid Shop From Space!"' Message: '' InventoryLocation: 38 ExtraPermission: '' # shop 2 HadesKitty: RewardType: playercommand PriceType: free Reward: - ewarp Shop-HadesKitty MenuItem: - type:SKULL_ITEM - playerhead:Turtle_Em - durability:3 - amount:1 - name:&5HadesKitty - 'lore:&6&o"our prices are fair!..."' Message: '' InventoryLocation: 39 # This value needs to be incremented by 1 each time ExtraPermission: '' >> insert new shops here << Back: RewardType: shop PriceType: free Reward: Shop_Menu MenuItem: - type:REDSTONE - amount:1 - name:&cBack - lore:&8Back to Shop Menu InventoryLocation: 54 这是写入文件的功能: def write(shop,id,data,desc,skull): f = open('file.yml','w') f.write(" %s:" % shop) f.write("n RewardType: playercommand") f.write("n PriceType: free") f.write("n Reward:") f.write("n - ewarp shop-%s" % shop) f.write("n MenuItem:") if skull: f.write("n - Type:SKULL_ITEM") f.write("n - playerhead:%s" % skull) f.write("n - durability:3") if not skull: f.write("n - id:%s" % id) if data: f.write("n - durability:%s" % data) f.write("n - amount:1") f.write("n - name:&5%s" % shop) f.write("n - 'lore:&6&o"%s"'" % desc) f.write("n Message:") f.write("n InventoryLocation:") f.write("n ExtraPermission: ''") f.flush() print "nAll done." print "nHit Return to quit or 1 to add more shops." while True: choice = raw_input(prompt) if choice == "": print "nGoodbye!" f.close() time.sleep(2) exit(0) elif choice == "1": os.system('cls' if os.name == 'nt' else 'clear') input() else: print "I dont understand that." 解决方法
这是一个很好的问题.我为你写了两个函数:
insert_before_back(列表,列表) insert_before_back接收文件行的列表以及在Back:之前要添加的所有行的列表,然后返回一个列表,并在正确的索引中添加项目. add_inventory(list,string) add_inventory接收文件行的列表以及要增加其库存的商店名称.然后它经过并将该数字加1,并将列表中的值重置为新增加的值.它返回一个新行的列表. 您可以使用这些来修改您读入的行的列表,然后只需浏览列表中的所有新修改的项目,并将每个项目写入具有相同名称的文件. 以下是我使用这两个函数的一个例子: def insert_before_back(lines,thingsToAdd): backIndex = lines.index('Back:n') for item in reversed(thingsToAdd): lines.insert(backIndex,item) return lines def add_inventory(lines,shopName): shopFound = 0 for i in range(len(lines)): if shopName in lines[i]: shopFound = 1 if 'InventoryLocation:' in lines[i] and shopFound: shopFound = 0 lineSplit = lines[i].split(': ') incrementInventory = str(int(lineSplit[-1]) + 1) lineSplit[-1] = incrementInventory + 'n' lines[i] = ': '.join(lineSplit) newLines = [] with open('input.txt','r') as f: inputLines = f.readlines() newLines = insert_before_back(inputLines,['Hellon','Fromn','heinstn']) add_inventory(newLines,'HadesKitty') with open('output.txt','w') as f: for line in newLines: f.write(line) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |