| import sys |
| from typing import List |
| |
| |
| def merge_txt_files(file_list: List[str], output_file: str) -> None: |
| if not file_list: |
| print("No input files provided.") |
| return |
| |
| metadata: List[str] = [] |
| content: List[str] = [] |
| |
| # Read metadata and content from all files |
| for file_path in file_list: |
| try: |
| with open(file_path) as file: |
| lines = file.readlines() |
| if len(lines) < 2: |
| print( |
| f"Error: {file_path} does not have enough lines for metadata." |
| ) |
| return |
| |
| file_metadata = lines[:2] |
| file_content = lines[2:] |
| |
| if not metadata: |
| metadata = file_metadata |
| elif metadata != file_metadata: |
| print(f"Error: Metadata mismatch in {file_path}") |
| print("Expected metadata:") |
| print("".join(metadata)) |
| print(f"Metadata in {file_path}:") |
| print("".join(file_metadata)) |
| return |
| |
| content.extend(file_content) |
| except OSError as e: |
| print(f"Error reading file {file_path}: {e}") |
| return |
| |
| # Write merged content to output file |
| try: |
| with open(output_file, "w") as outfile: |
| outfile.writelines(metadata) |
| outfile.writelines(content) |
| print(f"Successfully merged files into {output_file}") |
| except OSError as e: |
| print(f"Error writing to output file {output_file}: {e}") |
| |
| |
| if __name__ == "__main__": |
| if len(sys.argv) < 3: |
| print( |
| "Usage: python script.py output_file.txt input_file1.txt input_file2.txt ..." |
| ) |
| else: |
| output_file = sys.argv[1] |
| input_files = sys.argv[2:] |
| merge_txt_files(input_files, output_file) |