Моя программа должна брать текстовый файл, печатать содержимое, подсчитывать строки, запрашивать ввод строки, удалять каждое вхождение этой строки, сообщать, сколько раз строка была удалена, а затем выводить новое содержимое файла. Нас попросили использовать один файл, а не входной и выходной файл.
Мой код работает и делает все, что должен, до тех пор, пока я не попытаюсь сохранить изменения в файле в конце функции char_count, а функция print_output вообще не работает.
Если у меня есть входной файл содержимого:
Apples
Oranges
Bananas
Apples
Oranges
Bananas
если я попытаюсь удалить Bananas, результирующее содержимое файла для входного файла:
ApplesOrangesApplesOrangesles
Oranges
Bananas
Я пытался выяснить, что происходит, но безрезультатно, и в нашем учебнике по курсу, похоже, не упоминается перезапись входных файлов, но мы обязаны сделать это для задания. Что не так с моими двумя последними функциями?
def main():
input_file_name = input("Please Enter the name of your text file: ")
infile = open(input_file_name, "r+")
print()
print("---------------------------------------")
print("THE FILE CONTENTS ARE")
print("---------------------------------------")
print_file(infile)
print("---------------------------------------")
count_lines(infile)
print("---------------------------------------")
input_string = input("Please enter the word or string of words you want to remove from the text file: ")
print("---------------------------------------")
char_count(infile, input_string)
print("---------------------------------------")
print("THE NEW FILE CONTENTS ARE")
print_output(infile)
print("---------------------------------------")
infile.close()
def print_file(infile):
infile.seek(0)
allLines = infile.readlines()
for line in allLines:
text = line.rstrip()
print(text)
def count_lines(infile):
infile.seek(0)
allLines = infile.readlines()
count = 0
char = " "
for line in allLines :
text = line.rstrip()
while char != "":
char = infile.read(1)
count = count + 1
print("THE NUMBER OF LINES IS: %d " % count)
def char_count(infile, input_string) :
count = 0
infile.seek(0)
allLines = infile.readlines()
infile.seek(0)
for line in allLines:
while input_string in line:
line = line.replace(input_string, "")
count = count + 1
text = line.rstrip()
infile.write(text)
print("NUMBER OF OCCURRENCES REMOVED IS: %d" % count)
def print_output(infile):
infile.seek(0)
allLines = infile.readlines()
for line in allLines:
text = line.rstrip()
print(text)
main()