Modifying Lines in a File In-Place
Is it possible to efficiently parse a file line by line and modify specific lines without creating a copy or temporary file?
Answer:
Yes, it is possible to simulate in-place editing using a backup file. The fileinput module provides the necessary functionality for this.
Example:
Consider a script that removes lines not meeting a certain condition from files provided as command-line arguments or stdin:
import fileinput for line in fileinput.input(inplace=True, backup='.bak'): if some_condition(line): print(line) # The modified line is output to the current file
Usage:
To remove lines not satisfying some_condition from first_file.txt and second_file.txt, run the following command:
python grep_some_condition.py first_file.txt second_file.txt
Upon completion, first_file.txt and second_file.txt will only contain lines that meet the some_condition() predicate.
This approach ensures efficient in-place modification by creating a backup file .bak during the editing process, preserving the original file if any errors occur.
The above is the detailed content of How Can I Efficiently Modify Lines in a File In-Place Without Creating a Temporary File?. For more information, please follow other related articles on the PHP Chinese website!