có một sự kết hợp của kỹ thuật mà tôi thấy hữu ích trong việc giải quyết vấn đề này:
with open(file, 'r+') as fd:
contents = fd.readlines()
contents.insert(index, new_string) # new_string should end in a newline
fd.seek(0) # readlines consumes the iterator, so we need to start over
fd.writelines(contents) # No need to truncate as we are increasing filesize
trong ứng dụng cụ thể của chúng tôi, chúng tôi muốn thêm nó sau một chuỗi nhất định:
with open(file, 'r+') as fd:
contents = fd.readlines()
if match_string in contents[-1]: # Handle last line to prevent IndexError
contents.append(insert_string)
else:
for index, line in enumerate(contents):
if match_string in line and insert_string not in contents[index + 1]:
contents.insert(index + 1, insert_string)
break
fd.seek(0)
fd.writelines(contents)
Nếu bạn muốn nó để chèn chuỗi sau mỗi thể hiện của trận đấu, thay vì chỉ là người đầu tiên, loại bỏ các else:
(và đúng unindent) và break
.
Cũng lưu ý rằng and insert_string not in contents[index + 1]:
ngăn không cho thêm nhiều bản sao sau match_string
, do đó, an toàn để chạy liên tục.
Tôi nghi ngờ bạn sẽ không tìm thấy giải pháp cho điều này với một số nghiên cứu cơ bản. Bạn có chắc bạn đã làm điều đó không? –
@AbhranilDas nhờ vào từ ngữ tốt của tkbx Tôi ngay lập tức tìm thấy câu trả lời này! – dmeu
liên quan: [Làm thế nào để ghi vào giữa một tập tin văn bản trong khi đọc nội dung của nó?] (Http://stackoverflow.com/q/16556944/4279) – jfs