当前位置: 首页 > news >正文

SelectExamples 根据类名和语言寻找某一个类的示例代码

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①根据类名寻找示例代码


二:代码及注释

#!/usr/bin/env python3 import json import os import random import tempfile from datetime import datetime from operator import itemgetter from pathlib import Path from urllib.error import HTTPError from urllib.request import urlretrieve def get_program_parameters(): import argparse description = 'Get examples that use a particular VTK class for a given language.' epilogue = ''' The JSON file needed by this script is obtained from the gh-pages branch of the vtk-examples GitHub site. It is stored in your tempfile directory. If you change the URL to the JSON file, remember that there is a ten minute wait before you can overwrite the last downloaded file. To force the download specify -o on the command line. Here is the URL for an alternative site for testing: "https://raw.githubusercontent.com/ajpmaclean/web-test/gh-pages/src/Coverage/vtk_vtk-examples_xref.json" ''' parser = argparse.ArgumentParser(description=description, epilog=epilogue, formatter_class=argparse.RawTextHelpFormatter) # parser.add_argument('vtk_class', default="vtkFiltersSources",help='The desired VTK class.') # parser.add_argument('language', default="Python",help='The desired language, one of: CSharp, Cxx, Java, Python.') parser.add_argument('-a', '--all_values', action="store_true", help='All examples (Warning: Can be a very long list).') parser.add_argument('-n', '--number', type=int, default=5, help='The maximum number of examples.') parser.add_argument('-m', '--md', action='store_true', help='Display links in markdown inline format e.g. [label](URL).') parser.add_argument('-j', '--json_xref_url', default='https://raw.githubusercontent.com/Kitware/vtk-examples/gh-pages/src/Coverage/vtk_vtk-examples_xref.json', help='The URL for the JSON cross-reference file.') parser.add_argument('-o', '--overwrite', action="store_true", help='Force an initial download of the JSON cross-reference file.') args = parser.parse_args() return args.all_values, args.md, args.number, args.json_xref_url, args.overwrite def download_file(dl_path, dl_url, overwrite=False): """ Use the URL to get a file. :param dl_path: The path to download the file to. :param dl_url: The URL of the file. :param overwrite: If true, do a download even if the file exists. :return: The path to the file as a pathlib Path. """ file_name = dl_url.split('/')[-1] # Create necessary subdirectories in the dl_path # (if they don't exist). Path(dl_path).mkdir(parents=True, exist_ok=True) # Download if it doesn't exist in the directory overriding if overwrite is True. path = Path(dl_path, file_name) if not path.is_file() or overwrite: try: urlretrieve(dl_url, path) except HTTPError as e: raise RuntimeError(f'Failed to download {dl_url}. {e.reason}') return path def get_examples(d, vtk_class, lang, all_values=False, number=5, md_fmt=False): """ For the VTK Class and language return the total number of examples and a list of examples. :param d: The dictionary. :param vtk_class: The VTK Class e.g. vtkActor. :param lang: The language, e.g. Cxx. :param all_values: True if all examples are needed. :param number: The number of values. :param md_fmt: Use Markdown format with label and URL defined together. :return: Total number of examples and a list of examples. """ try: kv = d[vtk_class][lang].items() except KeyError: return None, None if len(kv) > number: if all_values: samples = list(kv) else: samples = random.sample(list(kv), number) else: samples = kv if md_fmt: links = [f'[{s.rsplit("/", 1)[1]}]({s})' for s in sorted(map(itemgetter(1), samples))] else: links = sorted(map(itemgetter(1), samples)) return len(links), links def get_crossref_dict(ref_dir, xref_url, overwrite=False): """ Download and return the json cross-reference file. This function ensures that the dictionary is recent. :param ref_dir: The directory where the file will be downloaded. :param xref_url: The URL for the JSON cross-reference file. :param overwrite: If true, do a download even if the file exists. :return: The dictionary cross-referencing vtk classes to examples. """ path = download_file(ref_dir, xref_url, overwrite=overwrite) if not path.is_file(): print(f'The path: {str(path)} does not exist.') return None dt = datetime.today().timestamp() - os.path.getmtime(path) # Force a new download if the time difference is > 10 minutes. if dt > 600: path = download_file(ref_dir, xref_url, overwrite=True) with open(path) as json_file: return json.load(json_file) def main(): all_values, md, number, xref_url, overwrite = get_program_parameters() vtk_class = "vtkNamedColors" language = "Python" language = language.lower() available_languages = {k.lower(): k for k in ['CSharp', 'Cxx', 'Java', 'Python', 'PythonicAPI']} available_languages.update({'cpp': 'Cxx', 'c++': 'Cxx', 'c#': 'CSharp'}) if language not in available_languages: print(f'The language: {language} is not available.') tmp = ', '.join(sorted([lang for lang in set(available_languages.values())])) print(f'Choose one of these: {tmp}.') return else: language = available_languages[language] xref_dict = get_crossref_dict(tempfile.gettempdir(), xref_url, overwrite) if xref_dict is None: print('The dictionary cross-referencing vtk classes to examples was not downloaded.') return total_number, examples = get_examples(xref_dict, vtk_class, language, all_values=all_values, number=number, md_fmt=md) if examples: if total_number <= number or all_values: print(f'VTK Class: {vtk_class}, language: {language}\n' f'Number of example(s): {total_number}.') else: print(f'VTK Class: {vtk_class}, language: {language}\n' f'Number of example(s): {total_number} with {number} random sample(s) shown.') print('\n'.join(examples)) else: print(f'No examples for the VTK Class: {vtk_class} and language: {language}') if __name__ == '__main__': main()
http://www.rkmt.cn/news/177194.html

相关文章:

  • 2025国内最新裸眼3D品牌 TOP5 推荐!服务深耕于四川、成都、广州、北京、云南等地区,优质服务厂家及企业权威榜单发布,重构视觉展示新生态 - 全局中转站
  • 热梗营销玩出深度共振,美团联合快手再造全民回忆
  • CNN图像分类实战:基于PyTorch-CUDA-v2.8的端到端训练
  • 【毕业设计】基于SpringBoot的高尔夫球场管理系统的设计与实现基于Springboot高尔夫场地预约网站管理系统(源码+文档+远程调试,全bao定制等)
  • 【飞书入门】飞书支持Markdown 吗
  • 【计算机毕业设计案例】基于Springboot的克州旅游网站的设计与实现精品路线推荐、行程规划、价格查询(程序+文档+讲解+定制)
  • Bootstrap5 表单验证
  • JSP 生命周期
  • Java毕设项目:基于Springboot高尔夫场地预约网站管理系统基于SpringBoot的高尔夫球场管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 机器人也能听懂音乐:本田研究院让机器人学会用耳朵预知未来
  • Anaconda配置PyTorch环境时提示空间不足怎么办?
  • 清华镜像站证书过期问题临时绕行方案
  • Git分支管理策略:适用于复杂PyTorch项目开发
  • AndroidWiFiADB终极指南:告别USB线缆,实现无线调试新体验
  • jQuery Mobile Data 属性详解
  • Jupyter Notebook实战:基于PyTorch-CUDA-v2.8的模型训练全流程
  • 如何在PyTorch-CUDA-v2.8中使用ONNX导出模型?
  • vue项目的选择星级样式和axios依赖调用
  • 如何在PyTorch-CUDA-v2.8中启用混合精度训练?
  • 那些年为了下载软件啃过的教程
  • fedora43 安装 nvidia 驱动以及开启视频编解码硬件加速
  • 树莓派创意项目实战:从零到一的完整构建指南
  • Docker Compose设置自动重启策略保障PyTorch服务稳定性
  • PyTorch-CUDA-v2.8镜像网络配置优化建议
  • 基于PyTorch-CUDA-v2.8的大模型Token生成效率实测对比
  • 国学大师:灵遁者在易学领域的三部著作
  • 【课程设计/毕业设计】基于springboot的家政服务撮合与评价平台基于Web的家政服务管理平台【附源码、数据库、万字文档】
  • PyTorch-CUDA-v2.8镜像日志收集与分析机制设计
  • PostgreSQL 删除数据库指南
  • 掌握这 4 个关键点!!保证RabbitMQ 消息不丢失和不重复消费