Source code for BasicTools.IO.PathControler

# -*- coding: utf-8 -*-
#
# This file is subject to the terms and conditions defined in
# file 'LICENSE.txt', which is part of this source code package.
#

"""Class for handling paths
"""

from os import path
import os
from BasicTools.Helpers.BaseOutputObject import BaseOutputObject
from BasicTools.Helpers.Tests import TestTempDir

[docs]class TemporalChdir(BaseOutputObject): def __init__(self,targetPath): super(TemporalChdir,self).__init__() self.originalPath = os.getcwd()+os.sep self.targetPath = targetPath def __enter__(self): os.chdir(self.targetPath) def __exit__(self, type, value, traceback): os.chdir(self.originalPath)
[docs]class PathControler(BaseOutputObject): currentDirectory = os.getcwd()+os.sep workingDirectory = os.getcwd()+os.sep def __init__(self): super(PathControler,self).__init__()
[docs] @staticmethod def SetCurrentDirectory(folder): PathControler.currentDirectory = path.abspath(path.expanduser(folder))+os.sep
[docs] @staticmethod def SetCurrentDirectoryUsingFile(folder): PathControler.currentDirectory = path.dirname(path.abspath(path.expanduser(folder)))+os.sep
[docs] @staticmethod def SetWorkingDirectory(folder): PathControler.workingDirectory = path.abspath(path.expanduser(folder))+os.sep
[docs] @staticmethod def SetWorkingDirectoryUsingFile(file): PathControler.workingDirectory = path.abspath(path.dirname(path.expanduser(file)) )+os.sep
[docs] @staticmethod def GetCurrentDirectory(): return PathControler.currentDirectory
[docs] @staticmethod def GetWorkingDirectory(): return PathControler.workingDirectory
[docs] @staticmethod def GetFullFilenameCurrentDirectory(filename,onpath=None): if os.path.isabs(filename): return filename else: if onpath is None: return path.abspath(PathControler.currentDirectory +filename) else: return path.abspath(onpath +filename)
[docs] @staticmethod def GetFullPathInCurrentDirectoryUsingFile(filename): file = PathControler.GetFullFilenameCurrentDirectory(filename) return path.abspath(path.dirname(path.expanduser(file)) )+os.sep
[docs] @staticmethod def GetFullPathnameOnWorkingDirectory(pathname): if os.path.isabs(pathname): return pathname else: return path.abspath(PathControler.workingDirectory +pathname)+os.sep
[docs] @staticmethod def GetFullFilenameOnWorkingDirectory(filename): if os.path.isabs(filename): return filename else: return path.abspath(PathControler.workingDirectory +filename)
[docs] @staticmethod def GetFullFilenameOnTempDirectory(filename): if os.path.isabs(filename): return filename else: return path.abspath(TestTempDir().GetTempPath() + filename)
[docs]def CheckIntegrity(): print("C: " +PathControler.currentDirectory) print("W: " +PathControler.workingDirectory) print("C: " + PathControler.GetFullFilenameCurrentDirectory("tata")) print("W: " +PathControler.GetFullFilenameOnWorkingDirectory("tete")) print("T: " +PathControler.GetFullFilenameOnTempDirectory("titi")) print("*************") PathControler.SetCurrentDirectory("~") PathControler.SetWorkingDirectory("/tmp") print("C: " +PathControler.GetFullFilenameCurrentDirectory("tata")) print("W: " +PathControler.GetFullFilenameOnWorkingDirectory("tete")) print("T: " +PathControler.GetFullFilenameOnTempDirectory("titi")) print("*************") PathControler.SetCurrentDirectory("..") PathControler.SetWorkingDirectory("/tmp/") print("C: " +PathControler.GetFullFilenameCurrentDirectory("tata")) print("W: " +PathControler.GetFullFilenameOnWorkingDirectory("../tete")) print("T: " +PathControler.GetFullFilenameOnTempDirectory("../../titi")) print(PathControler.GetCurrentDirectory()) print(PathControler.GetWorkingDirectory()) return("ok")
if __name__ == '__main__': print(CheckIntegrity())# pragma: no cover