https://github.com/AuReMe/metage2metabo
Tip revision: 32bb89f281d8858fea399ba8550f63ebe60e2d25 authored by Arnaud Belcour on 19 November 2019, 16:15:41 UTC
Move to 1.1.5.
Move to 1.1.5.
Tip revision: 32bb89f
utils.py
import sys
import os
def get_basename(filepath):
"""Return the basename of given filepath.
Args:
filepath (str): path to a file
Returns:
str: basename
>>> basename('~/an/interesting/file.txt')
'file
"""
return os.path.splitext(os.path.basename(filepath))[0]
def get_extension(filepath):
"""Get the extension of a filepath
Args:
filepath (str): path to a file
Returns:
str: extention of the file
>>> extension('~/an/interesting/file.lp')
'lp'
>>> extension('nothing')
''
>>> extension('nothing.important')
'important'
"""
return os.path.splitext(os.path.basename(filepath))[1][1:]
def is_valid_path(filepath):
"""Return True if filepath is valid
Args:
filepath (str): path to file
Returns:
bool: True if path exists, False otherwise
"""
if filepath and not os.access(filepath, os.W_OK):
try:
open(filepath, 'w').close()
os.unlink(filepath)
return True
except OSError:
return False
else: # path is accessible
return True
def is_valid_file(filepath):
"""Return True if filepath exists
Args:
filepath (str): path to file
Returns:
bool: True if path exists, False otherwise
"""
try:
open(filepath, 'r').close()
return True
except OSError:
return False
def is_valid_dir(dirpath):
"""Return True if directory exists or can be created (then create it)
Args:
dirpath (str): path of directory
Returns:
bool: True if dir exists, False otherwise
"""
if not os.path.isdir(dirpath):
try:
os.makedirs(dirpath)
return True
except OSError:
return False
else:
return True
def check_program(program):
"""Check whether Pathway Tools is in the PATH
Returns:
bool: True if Pathway Tools is in the PATH, False otherwise
"""
def is_exe(fpath):
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
if is_exe(program):
return True
else:
for path in os.environ["PATH"].split(os.pathsep):
exe_file = os.path.join(path, program)
if is_exe(exe_file):
return True
return False