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()
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
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]))
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)
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
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()
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()
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()