|
import argparse |
|
import shutil |
|
from tempfile import NamedTemporaryFile |
|
|
|
from loguru import logger |
|
|
|
|
|
def remove_chars_from_file(chars_to_remove, input_file, output_file): |
|
rm_cnt = 0 |
|
with open(input_file, "r", encoding="utf-8") as f_in, NamedTemporaryFile( |
|
"w", delete=False, encoding="utf-8" |
|
) as f_tmp: |
|
for line in f_in: |
|
if any(char in line for char in chars_to_remove): |
|
logger.info(f"删除了这一行:\n {line.strip()}") |
|
rm_cnt += 1 |
|
else: |
|
f_tmp.write(line) |
|
|
|
shutil.move(f_tmp.name, output_file) |
|
logger.critical(f"总计移除了: {rm_cnt} 行") |
|
|
|
|
|
if __name__ == "__main__": |
|
parser = argparse.ArgumentParser( |
|
description="Remove lines from a file containing specified characters." |
|
) |
|
|
|
parser.add_argument( |
|
"-c", |
|
"--chars", |
|
type=str, |
|
required=True, |
|
help="String of characters. If a line contains any of these characters, it will be removed.", |
|
) |
|
parser.add_argument( |
|
"-i", "--input", type=str, required=True, help="Path to the input file." |
|
) |
|
parser.add_argument( |
|
"-o", "--output", type=str, required=True, help="Path to the output file." |
|
) |
|
|
|
args = parser.parse_args() |
|
|
|
|
|
logger.add("removed_lines.log", rotation="1 MB") |
|
|
|
remove_chars_from_file(args.chars, args.input, args.output) |
|
|