[英]Python/list/file/loop/append
我必須打開一個文件並循環遍歷列表。 然后我必須打印結果並將某些行附加/寫入同一文件。 我希望能夠多次運行代碼,但我不想 append 某些行多次,我也不想閱讀附加的行。 問題是 - 如何僅附加/寫入一次以及如何跳過讀取附加行? 這是代碼:
kitty = 500
requests = []
file = open("loan_requests.txt", "r+")
requests = file.readlines()
for item in requests:
flag = bool(int(item))
if flag == False:
break
if int(item) <= kitty and kitty > 0:
kitty = kitty - int(item)
loan = int(item)
print(loan, "- Paid!")
file.write("Request of {} paid in full.\n".format(loan))
elif int(item) > kitty and kitty > 0:
kitty = kitty - int(item)
loan = int(item) + kitty
print(int(item), "Request cannot be processed in full (Insufficient funds available). Amount paid:", loan)
file.write("Request of {} could not be paid in full.Partial payment of {} made.\n".format(item, loan))
elif int(item) > kitty and kitty <= 0:
print("Request of", int(item), "is UNPAID!")
file.write("Outstanding Request:{}\n".format(item))
file.close()
Tried with seek(); tell().
在寫入文件之前,檢查文件是否已經包含該行。
kitty = 500
requests = []
file = open("loan_requests.txt", "r+")
requests = file.readlines()
def write_new(file, line, requests):
if line not in requests:
file.write(line)
for item in requests:
if int(item) < kitty and kitty > 0:
kitty = kitty - int(item)
loan = int(item)
write_new(file, "Request of {} paid in full.\n".format(loan), requests)
print(loan, "- Paid!")
elif int(item) > kitty and kitty > 0:
kitty = kitty - int(item)
loan = int(item) + kitty
write_new(file, "Request of {} could not be paid in full.Partial payment of {} made.\n".format(item, loan), requests)
print(int(item), "request cannot be processed in full (Insufficient funds available). Amount paid:", loan)
elif int(item) > kitty and kitty <= 0:
write_new(file, "Outstanding Request:{}\n".format(item), requests)
print("Request of", int(item), "is UNPAID!")
file.close()
轉換 Barman 的建議,讓我們從 helper function 開始,它是否會寫入取決於一些標志:
SHOULD_WRITE = True
def maybe_write(file, message):
if SHOULD_WRITE:
file.write(message)
現在使用 function 而不是file.write
:
# file.write("Request of {} paid in full.".format(loan))
maybe_write(file, f"Request of {loan} paid in full.")
下次,更改SHOULD_WRITE = False
的值
獎勵:你知道python有這么花哨的語法嗎?
if 0 < kitty < int(item):
...
kitty = 500
requests = []
file = open('loan_requests.txt')
for line in file:
if line.strip().isdecimal():
requests.append(int(line))
file.close()
with open('loan_requests.txt', 'a') as file:
for request in requests:
if request <= kitty:
file.write('\nRequest of ' + str(request) + ' paid in full.')
print(str(request) + ' - Paid!')
kitty -= request
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.