#!C:\Users\DESKTOP\Downloads\PythonPNG\pyenv\Scripts\python.exe# encoding: utf-8"""convert -- Convert PROV-JSON to RDF, PROV-N, PROV-XML, or graphical formats (SVG, PDF, PNG)@author: Trung Dong Huynh@copyright: 2016 University of Southampton, United Kingdom. All rights reserved.@license: MIT License@contact: trungdong@donggiang.com@deffield updated: 2016年10月19日"""from argparse import ArgumentParser, RawDescriptionHelpFormatter, FileTypeimport osimport sysimport loggingimport tracebackfrom prov.model import ProvDocumentfrom prov import serializerslogger = logging.getLogger(__name__)__all__ = []__version__ = 0.1__date__ = '2014-03-14'__updated__ = '2016-10-19'DEBUG = 0TESTRUN = 0PROFILE = 0GRAPHVIZ_SUPPORTED_FORMATS = {'bmp', 'canon', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'eps', 'fig', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap','jpe', 'jpeg', 'jpg', 'pdf', 'plain', 'plain-ext', 'png', 'ps', 'ps2', 'svg', 'svgz', 'tif', 'tiff', 'tk','vml', 'vmlz', 'x11', 'xdot', 'xlib'}class CLIError(Exception):"""Generic exception to raise and log different fatal errors."""def __init__(self, msg):super(CLIError).__init__(type(self))self.msg = "E: %s" % msgdef __str__(self):return self.msgdef convert_file(infile, outfile, output_format):prov_doc = ProvDocument.deserialize(infile)# Formats not supported by prov.serializersif output_format == 'provn':outfile.write(prov_doc.get_provn().encode())elif output_format in GRAPHVIZ_SUPPORTED_FORMATS:from prov.dot import prov_to_dotdot = prov_to_dot(prov_doc)content = dot.create(format=output_format)outfile.write(content)else:# Try supported serializers:try:prov_doc.serialize(outfile, format=output_format)except serializers.DoNotExist:raise CLIError('Output format "%s" is not supported.' % output_format)def main(argv=None): # IGNORE:C0111"""Command line options."""if argv is None:argv = sys.argvelse:sys.argv.extend(argv)program_name = os.path.basename(sys.argv[0])program_version = "v%s" % __version__program_build_date = str(__updated__)program_version_message = '%%(prog)s %s (%s)' % (program_version, program_build_date)program_shortdesc = __import__('__main__').__doc__.split("\n")[1]program_license = '''%sCreated by Trung Dong Huynh on %s.Copyright 2016 University of Southampton. All rights reserved.Licensed under the MIT Licensehttps://github.com/trungdong/prov/blob/master/LICENSEDistributed on an "AS IS" basis without warrantiesor conditions of any kind, either express or implied.USAGE''' % (program_shortdesc, str(__date__))try:# Setup argument parserparser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)parser.add_argument('-f', '--format', dest='format', action='store', default='json',help='output format: json, xml, provn, or one supported by GraphViz (e.g. svg, pdf)')parser.add_argument('infile', nargs='?', type=FileType('r'), default=sys.stdin)parser.add_argument('outfile', nargs='?', type=FileType('wb'), default=sys.stdout)parser.add_argument('-V', '--version', action='version', version=program_version_message)args = Nonetry:# Process argumentsargs = parser.parse_args()convert_file(args.infile, args.outfile, args.format.lower())finally:if args:if args.infile:args.infile.close()if args.outfile:args.outfile.close()return 0except KeyboardInterrupt:# handle keyboard interruptreturn 0except Exception as e:if DEBUG or TESTRUN:traceback.print_exc()raise eindent = len(program_name) * " "sys.stderr.write(program_name + ": " + str(e) + "\n")sys.stderr.write(indent + " for help use --help")return 2if __name__ == "__main__":logging.basicConfig(level=(logging.DEBUG if DEBUG else logging.INFO))if TESTRUN:import doctestdoctest.testmod()if PROFILE:import cProfileimport pstatsprofile_filename = 'converter_profile.txt'cProfile.run('main()', profile_filename)statsfile = open("profile_stats.txt", "wb")p = pstats.Stats(profile_filename, stream=statsfile)stats = p.strip_dirs().sort_stats('cumulative')stats.print_stats()statsfile.close()sys.exit(0)sys.exit(main())
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。