kopia lustrzana https://github.com/OpenDroneMap/ODM
88 wiersze
2.1 KiB
Python
88 wiersze
2.1 KiB
Python
import os
|
|
import shutil, errno
|
|
import json
|
|
|
|
def absolute_path_file(path_file):
|
|
return os.path.abspath(path_file)
|
|
|
|
|
|
def extract_path_from_file(file):
|
|
path_file = os.path.abspath(os.path.dirname(file))
|
|
path, file = os.path.split(path_file)
|
|
return path
|
|
|
|
|
|
def join_paths(path1, path2):
|
|
return os.path.join(path1, path2)
|
|
|
|
|
|
def file_exists(path_file):
|
|
return os.path.isfile(path_file)
|
|
|
|
|
|
def dir_exists(dirname):
|
|
return os.path.isdir(dirname)
|
|
|
|
|
|
def copy(src, dst):
|
|
try:
|
|
shutil.copytree(src, dst)
|
|
except OSError as e:
|
|
if e.errno == errno.ENOTDIR:
|
|
shutil.copy(src, dst)
|
|
else: raise
|
|
|
|
def rename_file(src, dst):
|
|
try:
|
|
os.rename(src, dst)
|
|
return True
|
|
except OSError as e:
|
|
if e.errno == errno.ENOENT:
|
|
return False
|
|
else:
|
|
raise
|
|
|
|
|
|
# find a file in the root directory
|
|
def find(filename, folder):
|
|
for root, dirs, files in os.walk(folder):
|
|
return '/'.join((root, filename)) if filename in files else None
|
|
|
|
|
|
def related_file_path(input_file_path, prefix="", postfix="", replace_base=None):
|
|
"""
|
|
For example: related_file_path("/path/to/file.ext", "a.", ".b")
|
|
--> "/path/to/a.file.b.ext"
|
|
"""
|
|
path, filename = os.path.split(input_file_path)
|
|
|
|
# path = path/to
|
|
# filename = file.ext
|
|
|
|
basename, ext = os.path.splitext(filename)
|
|
# basename = file
|
|
# ext = .ext
|
|
|
|
if replace_base is not None:
|
|
basename = replace_base
|
|
|
|
return os.path.join(path, "{}{}{}{}".format(prefix, basename, postfix, ext))
|
|
|
|
def path_or_json_string_to_dict(string):
|
|
if string == "":
|
|
return {}
|
|
|
|
if string.startswith("[") or string.startswith("{"):
|
|
try:
|
|
return json.loads(string)
|
|
except:
|
|
raise ValueError("{0} is not a valid JSON string.".format(string))
|
|
elif file_exists(string):
|
|
try:
|
|
with open(string, 'r') as f:
|
|
return json.loads(f.read())
|
|
except:
|
|
raise ValueError("{0} is not a valid JSON file.".format(string))
|
|
else:
|
|
raise ValueError("{0} is not a valid JSON file or string.".format(string))
|