SFlowTTS / Data /validate_list.py
FashionFlora's picture
Upload full repo excluding dump_40, dump_100, precomputed_tokens, precomputed_data
fb0011a verified
Raw History Blame Contribute Delete
2.36 kB
import os
def check_and_remove_missing_files(input_file, base_dir=None):
# Normalize base_dir (e.g., "../") if provided
if base_dir is not None:
base_dir = os.path.normpath(base_dir)
# Read the text file containing the list of files to check
with open(input_file, 'r', encoding='utf-8') as f:
all_lines = f.readlines()
files_to_check = []
for line in all_lines:
# Split the line into path and the rest of the text (after the | character)
parts = line.strip().split('|', 1)
if parts and parts[0]:
file_path = parts[0].strip()
files_to_check.append(file_path)
# Check for missing files (using base_dir if provided)
missing_files = []
for file_path in files_to_check:
resolved_path = (
os.path.join(base_dir, file_path) if base_dir is not None else file_path
)
if not os.path.exists(resolved_path):
missing_files.append(file_path)
# Print missing files
if missing_files:
print("Missing files (resolved paths):")
for file_path in missing_files:
resolved_path = (
os.path.join(base_dir, file_path) if base_dir is not None else file_path
)
print(resolved_path)
print(f"\nNumber of missing files: {len(missing_files)}")
# Remove lines with missing files (compare using original paths)
new_lines = []
missing_set = set(missing_files)
for line in all_lines:
parts = line.strip().split('|', 1)
keep = True
if parts and parts[0]:
file_path = parts[0].strip()
if file_path in missing_set:
keep = False
if keep:
new_lines.append(line)
# Write the updated list back to the file
with open(input_file, 'w', encoding='utf-8') as f:
f.writelines(new_lines)
print(f"\nRemoved {len(missing_files)} entries from {input_file}")
else:
print("All files exist.")
# Example usage:
# Set base_dir to "../" or any other directory you want to prepend
input_file = "train_3_filtered_dur_fixed_copy.txt" # Change to your actual filename
check_and_remove_missing_files(input_file, base_dir="../")