news 2026/5/1 7:03:48

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 6:18:22

如何查看GPU显存占用?nvidia-smi与PyTorch监控结合使用

如何查看GPU显存占用&#xff1f;nvidia-smi与PyTorch监控结合使用 在深度学习模型训练过程中&#xff0c;你是否遇到过这样的场景&#xff1a;程序运行到一半突然报错 CUDA out of memory&#xff0c;而你明明记得显卡还有不少空闲显存&#xff1f;或者发现模型刚加载完还没开…

作者头像 李华
网站建设 2026/4/24 7:04:47

SQLite Indexed By

SQLite Indexed By SQLite 是一个轻量级的数据库管理系统,它以其小巧的体积、高效的数据处理能力和强大的功能而广受欢迎。在SQLite数据库中,索引是提高查询效率的关键因素。本文将深入探讨SQLite索引的原理、类型、创建方法以及最佳实践。 索引的原理 索引是数据库中一种…

作者头像 李华
网站建设 2026/4/29 14:51:12

PostgreSQL NULL 值处理与优化

PostgreSQL NULL 值处理与优化 引言 在数据库设计中,NULL 值是一个重要的概念。在 PostgreSQL 中,NULL 值用于表示未知或缺失的数据。本文将详细介绍 PostgreSQL 中 NULL 值的处理方法,以及如何优化与 NULL 值相关的查询。 什么是 NULL 值? 在 PostgreSQL 中,NULL 值表…

作者头像 李华
网站建设 2026/5/1 5:00:33

YOLOv5l模型在PyTorch-CUDA-v2.8上的训练收敛速度分析

YOLOv5l 模型在 PyTorch-CUDA 环境下的训练收敛速度分析在现代目标检测任务中&#xff0c;模型训练效率直接决定了研发周期和落地成本。以自动驾驶中的实时障碍物识别为例&#xff0c;一个高精度模型若需数天才能完成训练&#xff0c;将极大拖慢迭代节奏。而如今&#xff0c;借…

作者头像 李华
网站建设 2026/4/26 20:28:42

PyTorch-CUDA-v2.8镜像体积优化:精简不必要的依赖包

PyTorch-CUDA-v2.8镜像体积优化&#xff1a;精简不必要的依赖包 在现代AI系统的构建中&#xff0c;一个看似微不足道的细节——容器镜像大小——往往成为影响部署效率和资源利用率的关键瓶颈。尤其是在CI/CD流水线频繁拉取镜像、边缘设备带宽受限或Kubernetes集群大规模调度的…

作者头像 李华
网站建设 2026/5/1 6:14:16

Anaconda配置PyTorch环境时提示空间不足怎么办?

Anaconda配置PyTorch环境时提示空间不足怎么办&#xff1f; 在深度学习项目启动阶段&#xff0c;一个常见的“拦路虎”并不是模型跑不通&#xff0c;而是——环境装不上。尤其当你兴冲冲打开终端准备用 conda install pytorch 创建开发环境时&#xff0c;却收到一条冰冷的提示&…

作者头像 李华