Dado un archivo, la tarea es imprimir y almacenar las líneas de ese archivo en orden inverso usando Stack.
Ejemplos:
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
Acercarse:
- Crea una pila vacía.
- Una por una empuja cada línea del archivo a la pila.
- Una por una, extraiga cada línea de la pila y vuelva a colocarlas en el archivo.
A continuación se muestra la implementación.
Fichero de entrada:
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 ="")
Producción:
This is a World of Geeks. Welcome to GeeksforGeeks.