HexaGrid / utils /file_utils.py
Surn's picture
Bug fixes
4a7bd09
# file_utils
import os
import utils.constants as constants
#import shutil
from pathlib import Path
def cleanup_temp_files():
for file_path in constants.temp_files:
try:
os.remove(file_path)
except Exception as e:
print(f"Failed to delete temp file {file_path}: {e}")
print("Temp files cleaned up. Goodbye")
def rename_file_to_lowercase_extension(file_path: str) -> str:
"""
Renames a file's extension to lowercase in place.
Parameters:
file_path (str): The original file path.
Returns:
str: The new file path with the lowercase extension.
Raises:
OSError: If there is an error renaming the file (e.g., file not found, permissions issue).
"""
# Split the path into directory and filename
directory, filename = os.path.split(file_path)
# Split the filename into name and extension
name, ext = os.path.splitext(filename)
# Convert the extension to lowercase
new_ext = ext.lower()
# If the extension changes, rename the file
if ext != new_ext:
new_filename = name + new_ext
new_file_path = os.path.join(directory, new_filename)
try:
os.rename(file_path, new_file_path)
print(f"Rename {file_path} to {new_file_path}\n")
except Exception as e:
print(f"os.rename failed: {e}. Falling back to binary copy operation.")
try:
# Read the file in binary mode and write it to new_file_path
with open(file_path, 'rb') as f:
data = f.read()
with open(new_file_path, 'wb') as f:
f.write(data)
print(f"Rename {file_path} to {new_file_path}\n")
# Optionally, remove the original file after copying
#os.remove(file_path)
except Exception as inner_e:
print(f"Failed to copy file from {file_path} to {new_file_path}: {inner_e}")
raise inner_e
return new_file_path
else:
return file_path