سؤال

I have a text file called test.txt, with the following content:

This is a test
I want this line removed

I'm trying to write an algorithm in Python 2 that removes the second line ("I want this line removed") as well as the line break on the first line. I'm trying to output this to a second file called test_2.txt; however, the resulting test_2.txt file is empty, and the first line is not there. Why? Here is my code:

#coding: iso-8859-1

Fil = open("test.txt", "wb")
Fil.write("This is a test" + "\n" + "I want this line removed")
Fil.close()
Fil = open("test.txt", "rb")
Fil_2 = open("test_2.txt", "wb")

number_of_lines = 0

for line in Fil:
    if line.find("I want") != 0:
        number_of_lines += 1

line_number = 1

for line in Fil:
    if line.find("I want") != 0:
        if line_number == number_of_lines:
            for g in range(0, len(line)):
                if g == 0:
                    a = line[0]
                elif g < len(line) - 1:
                    a += line[g]
            Fil_2.write(a)
        else:
            Fil_2.write(line)
        line_number += 1

Fil.close()
Fil_2.close()
هل كانت مفيدة؟

المحلول

You are overly complicating your algorithm. Try this instead:

with open('test.txt') as infile, open('test_2.txt', 'w') as outfile:
  for line in infile:
    if not line.startswith("I want"):
      outfile.write(line.strip())

نصائح أخرى

Remembering that open returns an iterator you can simplify, as well as generalise the solution, by writing it like this.

with open('test.txt') as infile:
    first_line = next(infile)
    with open('test_2.txt', 'w') as outfile:
        outfile.write(first_line.strip())
# both files will be automatically closed at this point
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top