示例#1
0
    def write(self, filename, string, index=None):
        """write string in the filename at index location
        :Arguments:
            filename - filename path in which to write the string
            string - the string to be written
            index - the index in the filename at which to write. writes at the
                    end of file if not provided
        :Returns:
            True if successful otherwise False
        """
        wdesc = "write string in the filename at index location"
        pNote(wdesc)
        status = True

        fd = file_Utils.open_file(filename, "a")
        if index and file_Utils.move_to_position(fd, index) == -1:
            msg = "Could not move file position to index {}".format(index)
            pNote(msg, "error")
            status = False
        if status:
            status = file_Utils.write(fd, string + "\n")
        pStep('Writing {!r} in {!r}'.format(string, filename))
        file_Utils.close(fd)
        file_Utils.log_result("write", status)

        return status
示例#2
0
 def remove(self, filename):
     """remove the filename from the system
     :Arguments:
         filename - filename path to be removed from system
     :Returns:
         True if successful otherwise False
     """
     wdesc = "remove the filename from the system"
     pNote(wdesc)
     status = file_Utils.remove(filename)
     pStep('removing {!r}'.format(filename))
     file_Utils.log_result("remove", status)
     return status
示例#3
0
    def check_text_occurrence(self,
                              filename,
                              regex,
                              occurrence="",
                              int_startidx=0,
                              int_endidx=-1):
        """find regex/string in the filename
        :Arguments:
            filename - file path in which to do the operation
            regex - regex or string to be checked
            occurrence - list of comma separated lines index to check,
                        empty to check all lines
            startidx - starting line from which to do check, first line
                        if not given
            endidx - ending line to do the check, last line if not given
        :Returns:
            True if successfully checked for all occurrences else False
        """
        wdesc = "find regex/string in the filename in the desired location"
        pNote(wdesc)
        lines_to_check = occurrence.split(',') if occurrence else []
        rec = re.compile(regex)
        status = True

        try:
            fd = file_Utils.open_file(filename, "r")
            lines = file_Utils.readlines(fd)
            if int_endidx < 0:
                int_endidx += len(lines)
            if int_endidx >= len(lines):
                pNote(
                    "indices of lines to check are more than the length of "
                    "the file", "error")
                return False
            for (idx, line) in enumerate(lines[int_startidx:int_endidx + 1]):
                if not lines_to_check or str(int_startidx + idx +
                                             1) in lines_to_check:
                    if rec.search(line) is None:
                        status = status and False
            linenos = occurrence if occurrence else "all"
            pStep('Checking {!r} in file {!r} on {!r} lines'.format(\
                                        regex, filename, linenos))
            file_Utils.close(fd)
        except Exception as e:
            exc_msg = "check_text_occurrence returned exception {}".format(
                str(e))
            pNote(exc_msg, "exception")
            status = False
        file_Utils.log_result("check_text_occurrence", status)

        return status
示例#4
0
 def copystat(self, filename, newname):
     """copy only stats of filename to newname and not its contents
     :Arguments:
         filename - stats of the filename path to be copied
         newname - new file name or path to which the stats has to be copied
     :Returns:
         True if successful otherwise False
     """
     wdesc = "copy stats of filename to newname"
     pNote(wdesc)
     status = file_Utils.copystat(filename, newname)
     pStep('Copying stat of {!r} to {!r}'.format(filename, newname))
     file_Utils.log_result("copystat", status)
     return status
示例#5
0
 def copy(self, filename, newname):
     """copy filename to newname
     :Arguments:
         filename - filename path to be copied
         newname - new file name or path to which the file has to be copied
     :Returns:
         True if successful otherwise False
     """
     wdesc = "copy filename to newname"
     pNote(wdesc)
     status = file_Utils.copy(filename, newname)
     pStep('Copying {!r} to {!r}'.format(filename, newname))
     file_Utils.log_result("copy", status)
     return status
示例#6
0
 def rename(self, filename, newname):
     """rename or move filename to newname
     :Arguments:
         filename - filename path to be renamed or moved
         newname - new file name or path to which the file has to be moved
     :Returns:
         True if successful otherwise False
     """
     wdesc = "rename or move a file"
     pNote(wdesc)
     status = file_Utils.move(filename, newname)
     pStep('renaming {!r} to {!r}'.format(filename, newname))
     file_Utils.log_result("rename", status)
     return status
示例#7
0
 def copy2(self, filename, newname):
     """copy filename to newname along with stats
     :Arguments:
         filename - filename path to be copied along with stats
         newname - new file name or path to which the file and stats has
                 to be moved
     :Returns:
         True if successful otherwise False
     """
     wdesc = "copy filename to newname along with stats"
     pNote(wdesc)
     status = file_Utils.copy2(filename, newname)
     pStep('Copying contents with stats of {!r} to {!r}'.format(
         filename, newname))
     file_Utils.log_result("copy2", status)
     return status
示例#8
0
    def findreplace(self,
                    filename,
                    regex,
                    newstring,
                    occurrence="",
                    int_startidx=0,
                    int_endidx=-1):
        """find regex/string in the filename and replace it with newstring
        :Arguments:
            filename - file path in which to do the operation
            regex - regex or string to be replaced
            newstring - the new string to replace the regex
            occurrence - list of comma separated lines index to find/replace,
                        empty to replace all occurrences
            startidx - starting line from which to do find/replace, first line
                        if not given
            endidx - ending line to do the find/replace, last line if not given
        :Returns:
            True if successfully replaced else False
        """
        wdesc = ("find regex/string in the filename and replace it with "
                 "newstring")
        pNote(wdesc)
        lines_to_replace = occurrence.split(',') if occurrence else []
        rec = re.compile(regex)
        status = True
        lines_replaced = 0

        try:
            fd = file_Utils.open_file(filename, "r")
            lines = file_Utils.readlines(fd)
            newlines = lines[:int_startidx] if int_startidx > 0 else []
            if int_endidx < 0:
                int_endidx += len(lines)
            if int_endidx >= len(lines):
                pNote(
                    "indices of lines to replace are more than the length of"
                    " the file", "error")
                return False
            for (idx, line) in enumerate(lines[int_startidx:int_endidx + 1]):
                if (lines_to_replace and str(int_startidx + idx + 1)
                        not in lines_to_replace):
                    newlines.append(line)
                else:
                    newlines.append(rec.sub(newstring, line))
                    lines_replaced += 1
            else:
                if int_endidx + 1 != len(lines):
                    newlines.extend(lines[int_endidx:])
            linenos = occurrence if occurrence else "all"
            pStep('replacing {!r} with {!r} in file {!r} on {!r} lines'.format( \
                                        regex, newstring, filename, linenos))
            file_Utils.close(fd)
        except Exception as e:
            exc_msg = "findreplace returned exception {}".format(str(e))
            pNote(exc_msg, "exception")
            status = False
        else:
            if lines_replaced:
                fd = file_Utils.open_file(filename, "w")
                file_Utils.writelines(fd, newlines)
                file_Utils.close(fd)
            else:
                pNote("no lines were replaced as no lines were selected",
                      "warning")
        file_Utils.log_result("findreplace", status)

        return status