import os
import tkinter
import tkinter.filedialog
from raconverter.constants import *
class DataFile:
"""
Get and evaluate file attributes against supported data file types.
"""
@staticmethod
def get_full_file_name():
"""
Get the full file name including path, file name, and file extension.
:return: The full file name including path, file name, and file extension
"""
# Select a file (prompt open file dialog box)
full_file_name = tkinter.filedialog.askopenfilename()
return full_file_name
@staticmethod
def get_directory_path(full_file_name):
"""
Get the directory path from the full file name.
:param full_file_name: The full file name including path, file name, and file extension
:return: The path to the file directory
"""
directory_path = os.path.split(os.path.abspath(full_file_name))[0]
return directory_path
@staticmethod
def get_file_name(full_file_name):
"""
Get the file name from the full file name.
:param full_file_name: The full file name including path, file name, and file extension
:return: The file name without extension
"""
file_name_with_extension = os.path.split(os.path.abspath(full_file_name))[1]
file_name = os.path.splitext(file_name_with_extension)[0]
return file_name
@staticmethod
def get_file_extension(full_file_name):
"""
Get the file extension from the full file name.
:param full_file_name: The full file name including path, file name, and file extension
:return: The file extension
"""
file_name_with_extension = os.path.split(os.path.abspath(full_file_name))[1]
file_extension = os.path.splitext(file_name_with_extension)[1]
return file_extension
@staticmethod
def validate_file_extension(file_extension):
"""
Validate the file extension.
The file extension is valid if it represents a data file from a supported statistical program.
:param file_extension: The file extension
:return: True | False
"""
valid = True
string_list = VALID_EXTENSIONS
valid_extensions = string_list.split()
# If invalid file extension
if file_extension not in valid_extensions:
valid = False
return valid
@staticmethod
def get_catalog_file(file_name):
"""
Check whether a catalog file with a given name exists.
The path is automatically set to the current working directory.
:param file_name: The physical name of the catalog file without extension
:return: True | False
"""
valid = True
# Get the name of the expected catalog file
catalog_file = file_name + SAS_CATALOG
# If the catalog file is missing
if not os.path.isfile(catalog_file):
valid = False
return valid
@staticmethod
def detect_any_catalog_file():
"""
# Check whether the current working directory contains any catalog file.
:return: True | False
"""
valid = False
for file in os.listdir('.'):
if file.endswith(SAS_CATALOG):
valid = True
# Exit for loop
break
return valid
Leave a Reply