| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/usr/bin/env python3
- import os
- import sys
- from pathlib import Path
- def process_file(input_path, output_path):
- """Process a single file to remove duplicate consecutive lines and round coordinates."""
- prev = None
- with open(input_path) as f_in, open(output_path, 'w') as f_out:
- for line in f_in:
- line_str = line.strip()
- if not line_str:
- continue
- try:
- parts = line_str.split()
- if len(parts) != 2:
- continue
- theta = round(float(parts[0]), 3)
- rho = round(float(parts[1]), 3)
- rounded_line = f"{theta:.3f} {rho:.3f}"
- except ValueError:
- continue
- if rounded_line == prev:
- continue
- f_out.write(rounded_line + '\n')
- prev = rounded_line
- def process_directory(input_dir, output_dir=None):
- """Recursively process all .thr files in the input directory."""
- input_path = Path(input_dir)
- if output_dir is None:
- output_path = input_path / 'processed'
- else:
- output_path = Path(output_dir)
- output_path.mkdir(parents=True, exist_ok=True)
- thr_files = list(input_path.rglob('*.thr'))
- if not thr_files:
- print(f"No .thr files found in {input_dir}")
- return
- print(f"Found {len(thr_files)} .thr files to process")
- for thr_file in thr_files:
- relative_path = thr_file.relative_to(input_path)
- output_file = output_path / relative_path
- output_file.parent.mkdir(parents=True, exist_ok=True)
- print(f"Processing {thr_file} -> {output_file}")
- process_file(thr_file, output_file)
- print(f"\nProcessing complete! Processed files are in: {output_path}")
- def main():
- if len(sys.argv) < 2:
- print(f"Usage: {sys.argv[0]} input_directory [output_directory]")
- print("If output_directory is not specified, files will be saved in input_directory/processed")
- sys.exit(1)
- input_dir = sys.argv[1]
- output_dir = sys.argv[2] if len(sys.argv) > 2 else None
- if not os.path.isdir(input_dir):
- print(f"Error: {input_dir} is not a valid directory")
- sys.exit(1)
- process_directory(input_dir, output_dir)
- if __name__ == "__main__":
- main()
|