📜  使用堆栈反转文件内容的Python程序

📅  最后修改于: 2022-05-13 01:55:33.680000             🧑  作者: Mango

使用堆栈反转文件内容的Python程序

给定一个文件,任务是使用 Stack 以相反的顺序打印和存储该文件的行。
例子:

Input :
I am
new to this
world of
Python.

Output :
Python.
world of
new to this
I am


Input :
1
2
3
4
5
Output :
5
4
3
2
1

方法:

  • 创建一个空堆栈。
  • 将文件的每一行一一推入堆栈。
  • 从堆栈中逐行弹出并将它们放回文件中。

下面是实现。
输入文件:

反向文件-python

Python3
# Python3 code to reverse the lines
# of a file using Stack.
  
     
# Creating Stack class (LIFO rule)
class Stack:
     
    def __init__(self):
         
        # Creating an empty stack
        self._arr = []
         
    # Creating push() method.
    def push(self, val):
        self._arr.append(val)
  
    def is_empty(self):
         
        # Returns True if empty
        return len(self._arr) == 0
 
    # Creating Pop method.
    def pop(self):
         
        if self.is_empty():
            print("Stack is empty")
            return
         
        return self._arr.pop()
 
# Creating a function which will reverse
# the lines of a file and Overwrites the
# given file with its contents line-by-line
# reversed
def reverse_file(filename):
      
    S = Stack()
    original = open(filename)
     
    for line in original:
        S.push(line.rstrip("\n"))
     
    original.close()
      
      
    output = open(filename, 'w')
     
    while not S.is_empty():
        output.write(S.pop()+"\n")
     
    output.close()
 
 
# Driver Code
filename = "GFG.txt"
 
# Calling the reverse_file function
reverse_file(filename)
  
# Now reading the content of the file
with open(filename) as file:
        for f in file.readlines():
            print(f, end ="")


输出:

This is a World of Geeks.
Welcome to GeeksforGeeks.

python-reverse-file-using-stack