1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/env python
- import sys
- import zipfile
- import argparse
- parser = argparse.ArgumentParser(description="accept to and from encodings")
- parser.add_argument('-O', metavar='decode', default="shift-jis")
- parser.add_argument('-I', metavar='encode', default="cp437")
- args, files = parser.parse_known_args();
- def unzip(filename, encode, decode):
- code = 0
- with zipfile.ZipFile(filename) as myzip:
- for info in myzip.infolist():
- try:
- info.filename = info.filename.encode(encode, 'strict').decode(decode, 'strict')
- myzip.extract(info)
- except Exception as e:
- code = 1
- print("failed to extract {0}: {1}".format(info.filename, e))
- return code
- def main(files, encode, decode):
- code = 0
- for file in files:
- if unzip(file, encode, decode) == 1:
- code = 1
- return code
- if __name__ == '__main__':
- sys.exit(main(files, args.I, args.O))
|