def open(self, src_file=None): """ Open command file Opens output files, if specified :src_file: Source file default, if no extension ext="csrc" If no extension: look for .py, then .csrc in source_directories else look for file in source_directories """ if src_file is None: src_file = self.src_file_name if src_file is None: raise SelectError("open has No src_file") """ Check name as given, then name.py, then name.csrc """ path = SlTrace.getSourcePath(src_file, report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".py", report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".crsrc", report=False, req=False) if path is None: raise SelectError("open can't find %s(.py, .crsrc) in %s" % (src_file, SlTrace.getSourceDirs(string=True))) ext = None match = re.search(r'\.([^.]+)$', path) self.file_type = "py" # Default type if match: ext = match.group(1) if ext == "py": self.file_type = "py" elif ext == "csrc": self.file_type = "csrc" else: self.file_type = "py" self.src_file_path = path self.src_file_name = os.path.basename(path) # Record self.eof = False # Set True at EOF if self.file_type == "csrc": try: if self.src_lst or SlTrace.trace("csrc"): SlTrace.lg("Open %s" % self.src_file_path) self.in_file = open(self.src_file_path, "r") except IOError as e: errno, strerror = e.args SlTrace.lg("Can't open command source file %s: %d %s" % (self.src_file_path, errno, strerror)) return False self.eof = False return True
def get_file_path(self, src_file=None, req=True): """ Get absolute file path, if one :src_file: name or relative path default: self.src_file_name :req: Raise error if not found default: True """ if src_file is None: src_file = self.src_file_name path = SlTrace.getSourcePath(src_file, report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".py", report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".csrc", report=False, req=False) if path is None: if req: dir_str = SlTrace.getSourceDirs(string=True) SelectReport(None, "File Control", f"open can't find {src_file}(.py, .csrc) in {dir_str}") return path
def get_file_path(self, src_file=None, req=True): """ Get absolute file path, if one :src_file: name or relative path default: self.src_file_name :req: Raise error if not found default: True """ if src_file is None: src_file = self.src_file_name path = SlTrace.getSourcePath(src_file, report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".py", report=False, req=False) if path is None: path = SlTrace.getSourcePath(src_file + ".csrc", report=False, req=False) if path is None: if req: raise SelectError( "open can't find %s(.py, .csrc) in %s" % (src_file, SlTrace.getSourceDirs(string=True))) return path