File indexing completed on 2026-04-20 07:58:59
0001
0002
0003
0004
0005
0006
0007 import argparse
0008 import os
0009 import re
0010 import sys
0011 import tempfile
0012 import zlib
0013
0014
0015
0016
0017 def test(arguments):
0018 print("file_operation: test")
0019
0020
0021
0022
0023
0024 def adler32(arguments):
0025 file_name = arguments.file
0026 val = 1
0027 blockSize = 32 * 1024 * 1024
0028 with open(file_name, "rb") as fp:
0029 while True:
0030 data = fp.read(blockSize)
0031 if not data:
0032 break
0033 val = zlib.adler32(data, val)
0034 if val < 0:
0035 val += 2**32
0036 retVal = hex(val)[2:10].zfill(8).lower()
0037 print(retVal)
0038
0039
0040
0041
0042
0043 def write_tmpfile(arguments):
0044 tmpArgFile = tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=arguments.suffix, dir=arguments.dir)
0045 in_data = re.sub(r"\\\\", r"\\", arguments.data)
0046 in_data = re.sub(r"\\n", "\n", in_data)
0047 tmpArgFile.write(in_data)
0048 tmpArgFile.close()
0049 print(tmpArgFile.name)
0050
0051
0052
0053
0054
0055 def remove_file(arguments):
0056 os.remove(arguments.path)
0057
0058
0059
0060
0061
0062 commandMap = {
0063
0064 "test": test,
0065
0066 "adler32": adler32,
0067 "write_tmpfile": write_tmpfile,
0068 "remove_file": remove_file,
0069 }
0070
0071
0072
0073
0074 def main():
0075
0076 oparser = argparse.ArgumentParser(prog="file_operations.py", add_help=True)
0077 subparsers = oparser.add_subparsers()
0078
0079
0080 test_parser = subparsers.add_parser("test", help="for testing only")
0081 test_parser.set_defaults(which="test")
0082
0083 adler32_parser = subparsers.add_parser("adler32", help="get adler32 checksum of the file")
0084 adler32_parser.set_defaults(which="adler32")
0085 adler32_parser.add_argument("file", type=str, action="store", metavar="<file>", help="file path")
0086
0087 write_tmpfile_parser = subparsers.add_parser("write_tmpfile", help="write data to a temporary file")
0088 write_tmpfile_parser.set_defaults(which="write_tmpfile")
0089 write_tmpfile_parser.add_argument("--suffix", type=str, action="store", metavar="<suffix>", default="xxx.tmp", help="name suffix of temporary file")
0090 write_tmpfile_parser.add_argument("--dir", type=str, action="store", metavar="<dir>", default="/tmp", help="directory of temorary file")
0091 write_tmpfile_parser.add_argument("data", type=str, action="store", metavar="<data>", help="data to write in temporary file")
0092
0093 remove_file_parser = subparsers.add_parser("remove_file", help="remove a file")
0094 remove_file_parser.set_defaults(which="remove_file")
0095 remove_file_parser.add_argument("path", type=str, action="store", metavar="<path>", help="file path")
0096
0097
0098 if len(sys.argv) == 1:
0099 oparser.print_help()
0100 sys.exit(1)
0101 arguments = oparser.parse_args(sys.argv[1:])
0102
0103 try:
0104 command = commandMap.get(arguments.which)
0105 except AttributeError:
0106 oparser.print_help()
0107 sys.exit(1)
0108 try:
0109 result = command(arguments)
0110 sys.exit(result)
0111 except Exception as e:
0112 sys.stderr.write(f"{e.__class__.__name__}: {e}")
0113 sys.exit(1)
0114
0115
0116 if __name__ == "__main__":
0117 main()