示例#1
0
文件: seqmv.py 项目: behnam/cgkit
def main():
    """Main function.
    """
    parser = optparse.OptionParser(usage="%prog [options] src dst")
    parser.add_option("-s", "--source-frames", default="0-", metavar="FRAMES", help="Specify a subset of the source frames")
    parser.add_option("-d", "--destination-frames", default=None, metavar="FRAMES", help="Specify the destination numbers")
    parser.add_option("-e", "--drop-extensions", action="store_true", default=False, help="Don't handle missing file extensions in the output pattern")
    parser.add_option("-f", "--force", action="store_true", default=False, help="Never query the user for confirmation")
    parser.add_option("-t", "--test", action="store_true", default=False, help="Only print what would be done, but don't move anything")
    parser.add_option("-v", "--verbose", action="store_true", default=False, help="Print every file when it is moved")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqmv (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)
        
    if len(args)!=2:
        parser.print_usage()
        return

    # The source frame numbers
    srcRange = sequence.Range(opts.source_frames)
    
    # The destination frame numbers
    dstRange = None
    if opts.destination_frames is not None:
        dstRange = sequence.Range(opts.destination_frames)

    srcSeq = args[0]
    dstArg = args[1]
    
    # Determine the source sequences
    fseqs = sequence.glob(srcSeq)
    
    mover = sequence.MoveSequence(fseqs, dstArg, [srcRange], dstRange, keepExt=not opts.drop_extensions, verbose=opts.verbose)
    
    for srcSeq,dstSeq in mover.sequences():
        print ("Move: %s -> %s"%(srcSeq, dstSeq))
        
    
    # Check a file number would get appended to a trailing number in the base name
    if mover.mergesNumbers() and not opts.force:
        print ("WARNING: The destination name ends in a number which would affect the output sequence number.")
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Check if an existing file would get overwritten
    overwrites = list(mover.overwrites())
    if len(overwrites)>0 and not opts.force:
        print ("WARNING: %s files would get overwritten."%len(overwrites))
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Dry run or real run...
    if opts.test:
        mover.dryRun()
    else:
        mover.run()
示例#2
0
文件: seqrm.py 项目: kaukeb/cgkit
def main():
    parser = optparse.OptionParser(usage="%prog [options] sequences")
    parser.add_option("-n", "--signed-frames", action="store_true", default=False, help="Treat the last number as a signed number")
    parser.add_option("-N", "--signed-nums", action="store_true", default=False, help="Treat all numbers as signed numbers")
    parser.add_option("-f", "--force", action="store_true", default=False, help="Never query the user for confirmation")
    parser.add_option("-v", "--verbose", action="store_true", default=False, help="Print every file when it is deleted")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqrm (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args)<1:
        parser.print_usage()
        return

    # Initialize the signedNums parameter
    if opts.signed_nums:
        signedNums = True
    elif opts.signed_frames:
        signedNums = [-1]
    else:
        signedNums = None
 
    # Collect all specified sequences...
    sequences = []
    for pattern in args:
        fseqs = sequence.glob(pattern, signedNums=signedNums)
        if len(fseqs)==0:
            print >>sys.stderr, '%s: No sequence "%s" found.'%(os.path.basename(sys.argv[0]), pattern)
            
        for fseq in fseqs:
            sequences.append(fseq)
            
    # No sequences specified? Then there's nothing to do
    if len(sequences)==0:
        return 0
            
    # Ask for confirmation...
    if not opts.force:
        for fseq in sequences:
            print fseq
        if len(sequences)==1:
            msg = "Are you sure to delete the above sequence?"
        else:
            msg = "Are you sure to delete the above %s sequences?"%len(sequences)
        if not promptUser(msg):
            return 0
            
    # Delete the sequences..
    for fseq in sequences:
        print ("Deleting %s"%fseq)
        for fileName in fseq:
            if opts.verbose:
                print ("Deleting %s"%fileName)
            os.remove(str(fileName))
            
    return 0
示例#3
0
    def testGlob(self):
        """Test the sequence.glob() function.
        """
        for i in [1,2,10]:
            f = open("tmp/globtstu_%d.txt"%i, "wt")
            f.close()
            
        for i in [-1,-2, 1,2]:
            f = open("tmp/globtsts_%04d.txt"%i, "wt")
            f.close()

        if not os.path.isdir("tmp/seq"):
            os.mkdir("tmp/seq")
        for i in [1,2]:
            f = open("tmp/seq/globtsts_%04d.txt"%i, "wt")
            f.close()

        # Read an unsigned sequence        
        files = sequence.glob("tmp/glob*u_")
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'globtstu_1.txt'),
                          os.path.join('tmp', 'globtstu_2.txt'),
                          os.path.join('tmp', 'globtstu_10.txt')], list(files[0]))

        # Read an unsigned sequence using a pattern containing "@". The result must also include frame 10.
        files = sequence.glob("tmp/[email protected]")
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'globtstu_1.txt'),
                          os.path.join('tmp', 'globtstu_2.txt'),
                          os.path.join('tmp', 'globtstu_10.txt')], list(files[0]))

        # Read an unsigned sequence using a pattern containing "@@". The result must only include frame 10.
        files = sequence.glob("tmp/globtstu_@@.txt")
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'globtstu_10.txt')], list(files[0]))

        # Read a signed sequence as unsigned (the negative numbers should now not appear because they don't match the pattern)
        files = sequence.glob("tmp/globtsts_#.txt")
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'globtsts_0001.txt'),
                          os.path.join('tmp', 'globtsts_0002.txt')], list(files[0]))

        # Read a signed sequence
        files = sequence.glob("tmp/globtsts_#.txt", signedNums=True)
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'globtsts_-002.txt'),
                          os.path.join('tmp', 'globtsts_-001.txt'),
                           os.path.join('tmp', 'globtsts_0001.txt'),
                           os.path.join('tmp', 'globtsts_0002.txt')], list(files[0]))

        # Read a sequence that only consists of two digits (should return an empty list)
        files = sequence.glob("tmp/globtsts_@@.txt")
        self.assertEqual(0, len(files))

        # Read sequences from a directory by specifying only the path
        files = sequence.glob(os.path.join("tmp", "seq", ""))
        self.assertEqual(1, len(files))
        self.assertEqual([os.path.join('tmp', 'seq', 'globtsts_0001.txt'),
                          os.path.join('tmp', 'seq', 'globtsts_0002.txt')], list(files[0]))
示例#4
0
文件: seqls.py 项目: kaukeb/cgkit
def main():
    parser = optparse.OptionParser(usage="%prog [options] paths")
    parser.add_option("-l", "--long", action="store_true", default=False, help="Print additional information per sequence")
    parser.add_option("-d", "--directories", action="store_true", default=False, help="List directories")
    parser.add_option("-n", "--signed-frames", action="store_true", default=False, help="Treat the last number as a signed number")
    parser.add_option("-N", "--signed-nums", action="store_true", default=False, help="Treat all numbers as signed numbers")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqls (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args)==0:
        args = ["*"]

    args.sort()

    # Initialize the signedNums parameter
    if opts.signed_nums:
        signedNums = True
    elif opts.signed_frames:
        signedNums = [-1]
    else:
        signedNums = None

    # List directories first
    if opts.directories:
        for pattern in args:
            for name in glob.glob("%s*"%pattern):
                if os.path.isdir(name):
                    if opts.long:
                        print ("%53s/"%name)
                    else:
                        print ("%s/"%name)
    
    # List sequences
    for pattern in args: 
        fseqs = sequence.glob(pattern, signedNums=signedNums)
        for fseq in fseqs:
            if opts.long:
                info = SequenceInfo(fseq)
                print ("%8s  %12s - %12s %-12s %s [%d files]"%(info.sizeStr(),
                                                        info.minMTimeStr(),
                                                        info.maxMTimeStr(),
                                                        "(%s)"%info.timeSpanStr(),
                                                        fseq,
                                                        len(fseq)))
            else:
                print (fseq)
示例#5
0
def main():
    parser = optparse.OptionParser(usage="%prog [options] paths")
    parser.add_option("-l", "--long", action="store_true", default=False, help="Print additional information per sequence")
    parser.add_option("-d", "--directories", action="store_true", default=False, help="List directories")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqls (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args)==0:
        args = ["*"]

    args.sort()

    # List directories first
    if opts.directories:
        for pattern in args:
            for name in glob.glob("%s*"%pattern):
                if os.path.isdir(name):
                    if opts.long:
                        print ("%53s/"%name)
                    else:
                        print ("%s/"%name)
    
    # List sequences
    for pattern in args: 
        fseqs = sequence.glob(pattern)
        for fseq in fseqs:
            if opts.long:
                info = SequenceInfo(fseq)
                print ("%8s  %12s - %12s %-12s %s [%d files]"%(info.sizeStr(),
                                                        info.minMTimeStr(),
                                                        info.maxMTimeStr(),
                                                        "(%s)"%info.timeSpanStr(),
                                                        fseq,
                                                        len(fseq)))
            else:
                print (fseq)
def main():
    parser = optparse.OptionParser(usage="%prog [options] sequences")
    parser.add_option("-n",
                      "--signed-frames",
                      action="store_true",
                      default=False,
                      help="Treat the last number as a signed number")
    parser.add_option("-N",
                      "--signed-nums",
                      action="store_true",
                      default=False,
                      help="Treat all numbers as signed numbers")
    parser.add_option("-f",
                      "--force",
                      action="store_true",
                      default=False,
                      help="Never query the user for confirmation")
    parser.add_option("-v",
                      "--verbose",
                      action="store_true",
                      default=False,
                      help="Print every file when it is deleted")
    parser.add_option("-V",
                      "--version",
                      action="store_true",
                      default=False,
                      help="Display version information")
    opts, args = parser.parse_args()

    if opts.version:
        print("seqrm (cgkit %s)" % cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args) < 1:
        parser.print_usage()
        return

    # Initialize the signedNums parameter
    if opts.signed_nums:
        signedNums = True
    elif opts.signed_frames:
        signedNums = [-1]
    else:
        signedNums = None

    # Collect all specified sequences...
    sequences = []
    for pattern in args:
        fseqs = sequence.glob(pattern, signedNums=signedNums)
        if len(fseqs) == 0:
            print >> sys.stderr, '%s: No sequence "%s" found.' % (
                os.path.basename(sys.argv[0]), pattern)

        for fseq in fseqs:
            sequences.append(fseq)

    # No sequences specified? Then there's nothing to do
    if len(sequences) == 0:
        return 0

    # Ask for confirmation...
    if not opts.force:
        for fseq in sequences:
            print fseq
        if len(sequences) == 1:
            msg = "Are you sure to delete the above sequence?"
        else:
            msg = "Are you sure to delete the above %s sequences?" % len(
                sequences)
        if not promptUser(msg):
            return 0

    # Delete the sequences..
    for fseq in sequences:
        print("Deleting %s" % fseq)
        for fileName in fseq:
            if opts.verbose:
                print("Deleting %s" % fileName)
            os.remove(str(fileName))

    return 0
示例#7
0
def main():
    """Main function.
    """
    parser = optparse.OptionParser(usage="%prog [options] src dst")
    parser.add_option("-s",
                      "--source-frames",
                      default=None,
                      metavar="FRAMES",
                      help="Specify a subset of the source frames")
    parser.add_option("-d",
                      "--destination-frames",
                      default=None,
                      metavar="FRAMES",
                      help="Specify the destination numbers")
    parser.add_option(
        "-e",
        "--drop-extensions",
        action="store_true",
        default=False,
        help="Don't handle missing file extensions in the output pattern")
    parser.add_option("-n",
                      "--signed-frames",
                      action="store_true",
                      default=False,
                      help="Treat the last number as a signed number")
    parser.add_option("-N",
                      "--signed-nums",
                      action="store_true",
                      default=False,
                      help="Treat all numbers as signed numbers")
    parser.add_option("-f",
                      "--force",
                      action="store_true",
                      default=False,
                      help="Never query the user for confirmation")
    parser.add_option(
        "-t",
        "--test",
        action="store_true",
        default=False,
        help="Only print what would be done, but don't move anything")
    parser.add_option("-v",
                      "--verbose",
                      action="store_true",
                      default=False,
                      help="Print every file when it is moved")
    parser.add_option("-V",
                      "--version",
                      action="store_true",
                      default=False,
                      help="Display version information")
    opts, args = parser.parse_args()

    if opts.version:
        print("seqmv (cgkit %s)" % cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args) != 2:
        parser.print_usage()
        return

    # The source frame numbers
    if opts.source_frames is not None:
        srcRanges = [sequence.Range(opts.source_frames)]
    else:
        srcRanges = None

    # The destination frame numbers
    dstRange = None
    if opts.destination_frames is not None:
        dstRange = sequence.Range(opts.destination_frames)

    # Initialize the signedNums parameter
    if opts.signed_nums:
        signedNums = True
    elif opts.signed_frames:
        signedNums = [-1]
    else:
        signedNums = None

    srcSeq = args[0]
    dstArg = args[1]

    # Determine the source sequences
    fseqs = sequence.glob(srcSeq, signedNums=signedNums)

    mover = sequence.MoveSequence(fseqs,
                                  dstArg,
                                  srcRanges,
                                  dstRange,
                                  keepExt=not opts.drop_extensions,
                                  verbose=opts.verbose)

    for srcSeq, dstSeq in mover.sequences():
        print("Move: %s -> %s" % (srcSeq, dstSeq))

    # Check a file number would get appended to a trailing number in the base name
    if mover.mergesNumbers() and not opts.force:
        print(
            "WARNING: The destination name ends in a number which would affect the output sequence number."
        )
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Check if an existing file would get overwritten
    overwrites = list(mover.overwrites())
    if len(overwrites) > 0 and not opts.force:
        print("WARNING: %s files would get overwritten." % len(overwrites))
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Dry run or real run...
    if opts.test:
        mover.dryRun()
    else:
        mover.run()
示例#8
0
文件: seqcp.py 项目: Princu/Imagica
def main():
    """Main function.
    """
    parser = optparse.OptionParser(usage="%prog [options] src dst")
    parser.add_option("-s", "--source-frames", default=None, metavar="FRAMES", help="Specify a subset of the source frames")
    parser.add_option("-d", "--destination-frames", default=None, metavar="FRAMES", help="Specify the destination numbers")
    parser.add_option("-e", "--drop-extensions", action="store_true", default=False, help="Don't handle missing file extensions in the output pattern")
    parser.add_option("-S", "--symlink", action="store_true", default=False, help="Create symbolic links instead of copying the files")
    parser.add_option("-R", "--realpath", action="store_true", default=False, help="Use the real path of the source files (follow links). This is only relevant when symbolic links are created.")
    parser.add_option("-n", "--signed-frames", action="store_true", default=False, help="Treat the last number as a signed number")
    parser.add_option("-N", "--signed-nums", action="store_true", default=False, help="Treat all numbers as signed numbers")
    parser.add_option("-f", "--force", action="store_true", default=False, help="Never query the user for confirmation")
    parser.add_option("-t", "--test", action="store_true", default=False, help="Only print what would be done, but don't copy anything")
    parser.add_option("-v", "--verbose", action="store_true", default=False, help="Print every file when it is copied")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqcp (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args)!=2:
        parser.print_usage()
        return

    # The source frame numbers
    if opts.source_frames is not None:
        srcRanges = [sequence.Range(opts.source_frames)]
    else:
        srcRanges = None
    
    # The destination frame numbers
    dstRange = None
    if opts.destination_frames is not None:
        dstRange = sequence.Range(opts.destination_frames)

    # Initialize the signedNums parameter
    if opts.signed_nums:
        signedNums = True
    elif opts.signed_frames:
        signedNums = [-1]
    else:
        signedNums = None

    srcSeq = args[0]
    dstArg = args[1]
    
    # Determine the source sequences
    fseqs = sequence.glob(srcSeq, signedNums=signedNums)
    
    if opts.symlink:
        processor = sequence.SymLinkSequence(fseqs, dstArg, srcRanges, dstRange,
                                             keepExt=not opts.drop_extensions, verbose=opts.verbose, resolveSrcLinks=opts.realpath)
        opStr = "Link"
    else:
        processor = sequence.CopySequence(fseqs, dstArg, srcRanges, dstRange,
                                          keepExt=not opts.drop_extensions, verbose=opts.verbose, resolveSrcLinks=opts.realpath)
        opStr = "Copy"
    
    for srcSeq,dstSeq in processor.sequences():
        print ("%s: %s -> %s"%(opStr, srcSeq, dstSeq))
    
    # Check a file number would get appended to a trailing number in the base name
    if processor.mergesNumbers() and not opts.force:
        print ("WARNING: The destination name ends in a number which would affect the output sequence number.")
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Check if an existing file would get overwritten
    overwrites = list(processor.overwrites())
    if len(overwrites)>0 and not opts.force:
        print ("WARNING: %s files would get overwritten."%len(overwrites))
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Dry run or real run...
    if opts.test:
        processor.dryRun()
    else:
        processor.run()
示例#9
0
def main():
    """Main function.
    """
    parser = optparse.OptionParser(usage="%prog [options] src dst")
    parser.add_option("-s", "--source-frames", default="0-", metavar="FRAMES", help="Specify a subset of the source frames")
    parser.add_option("-d", "--destination-frames", default=None, metavar="FRAMES", help="Specify the destination numbers")
    parser.add_option("-e", "--drop-extensions", action="store_true", default=False, help="Don't handle missing file extensions in the output pattern")
    parser.add_option("-S", "--symlink", action="store_true", default=False, help="Create symbolic links instead of copying the files")
    parser.add_option("-R", "--realpath", action="store_true", default=False, help="Use the real path of the source files (follow links). This is only relevant when symbolic links are created.")
    parser.add_option("-f", "--force", action="store_true", default=False, help="Never query the user for confirmation")
    parser.add_option("-t", "--test", action="store_true", default=False, help="Only print what would be done, but don't copy anything")
    parser.add_option("-v", "--verbose", action="store_true", default=False, help="Print every file when it is copied")
    parser.add_option("-V", "--version", action="store_true", default=False, help="Display version information")
    opts,args = parser.parse_args()

    if opts.version:
        print ("seqcp (cgkit %s)"%cgkit.cgkitinfo.version)
        sys.exit(0)

    if len(args)!=2:
        parser.print_usage()
        return

    # The source frame numbers
    srcRange = sequence.Range(opts.source_frames)
    
    # The destination frame numbers
    dstRange = None
    if opts.destination_frames is not None:
        dstRange = sequence.Range(opts.destination_frames)

    srcSeq = args[0]
    dstArg = args[1]
    
    # Determine the source sequences
    fseqs = sequence.glob(srcSeq)
    
    if opts.symlink:
        processor = sequence.SymLinkSequence(fseqs, dstArg, [srcRange], dstRange,
                                             keepExt=not opts.drop_extensions, verbose=opts.verbose, resolveSrcLinks=opts.realpath)
        opStr = "Link"
    else:
        processor = sequence.CopySequence(fseqs, dstArg, [srcRange], dstRange,
                                          keepExt=not opts.drop_extensions, verbose=opts.verbose, resolveSrcLinks=opts.realpath)
        opStr = "Copy"
    
    for srcSeq,dstSeq in processor.sequences():
        print ("%s: %s -> %s"%(opStr, srcSeq, dstSeq))
    
    # Check a file number would get appended to a trailing number in the base name
    if processor.mergesNumbers() and not opts.force:
        print ("WARNING: The destination name ends in a number which would affect the output sequence number.")
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Check if an existing file would get overwritten
    overwrites = list(processor.overwrites())
    if len(overwrites)>0 and not opts.force:
        print ("WARNING: %s files would get overwritten."%len(overwrites))
        if not opts.test and not promptUser("Are you sure to continue?"):
            return

    # Dry run or real run...
    if opts.test:
        processor.dryRun()
    else:
        processor.run()