Method reads properly but the written text file only has 1 line. Is \n not working?

Viewed 27
  1. The goal is to extract specific data from a text file under a folder
  2. then write that data into another file under different folder
  3. The extraction part works, save to variables and can even print them
  4. The rises when you try to write them to a file
  5. The file is empty
  6. Need to write in this format {self.title};;;{self.author};;;{self.release_date};;; {self.last_update_date};;;{self.language};;;{self.producer};;;{self.book_path}
# This class includes all the operations related to a book
class Operation:
    """
    Need to include these class variables
    book_title_list (List of all books titles such as “[title1, title2, title3, …]”)
    book_info_dict = “{title1: obj1, title2:obj2, title3:obj3…….}”)
    """
    book_folder_path = './data/books_data/'
    book_info_path = './data/result_data/books.txt'

    def extract_book_info(self):
        directory_files = os.listdir(self.book_folder_path)  # Stores the .txt files under books_data folder
        try:
            for i in directory_files:
                with open(f'{self.book_folder_path}/{i}', 'r', encoding='utf8') as f:
                    f_contents = f.readlines()
                    f_line_free = list(map(lambda x: x.strip(), f_contents))
                    f_lists = f_line_free[10:22] # Slicing only the required elements of the list
                    """
                    Extracting only the necessary part and storing them
                    under proper variables
                    """
                    title = f_lists[0]
                    author = f_lists[2]
                    release_date = f_lists[4]
                    last_update_date = f_lists[5]
                    language = f_lists[7]
                    producer = f_lists[11]

                    """
                    Extracting the desired values
                    """
                    title_data = title[7:]
                    author_data = author[8:]
                    release_date_data = release_date[14:]
                    last_update_date_data = last_update_date[24:-1]
                    language_data = language[10:]
                    producer_data = producer[13:]
                    print(title_data)
                with open(self.book_info_path, 'w', encoding="utf8") as wf:
                    wf.write(f'{title_data};;;{author_data};;;{release_date_data};;;'
                             f'{last_update_date_data};;;{language_data};;;{producer_data};;;{self.book_info_path}\n')
            return True

        except FileNotFoundError:
            return False
        except Exception:
            return False
0 Answers
Related