import importlib.machineryimport osimport sysfrom idlelib.browser import ModuleBrowser, ModuleBrowserTreeItemfrom idlelib.tree import TreeItemclass PathBrowser(ModuleBrowser):def __init__(self, master, *, _htest=False, _utest=False):"""_htest - bool, change box location when running htest"""self.master = masterself._htest = _htestself._utest = _utestself.init()def settitle(self):"Set window titles."self.top.wm_title("Path Browser")self.top.wm_iconname("Path Browser")def rootnode(self):return PathBrowserTreeItem()class PathBrowserTreeItem(TreeItem):def GetText(self):return "sys.path"def GetSubList(self):sublist = []for dir in sys.path:item = DirBrowserTreeItem(dir)sublist.append(item)return sublistclass DirBrowserTreeItem(TreeItem):def __init__(self, dir, packages=[]):self.dir = dirself.packages = packagesdef GetText(self):if not self.packages:return self.direlse:return self.packages[-1] + ": package"def GetSubList(self):try:names = os.listdir(self.dir or os.curdir)except OSError:return []packages = []for name in names:file = os.path.join(self.dir, name)if self.ispackagedir(file):nn = os.path.normcase(name)packages.append((nn, name, file))packages.sort()sublist = []for nn, name, file in packages:item = DirBrowserTreeItem(file, self.packages + [name])sublist.append(item)for nn, name in self.listmodules(names):item = ModuleBrowserTreeItem(os.path.join(self.dir, name))sublist.append(item)return sublistdef ispackagedir(self, file):" Return true for directories that are packages."if not os.path.isdir(file):return Falseinit = os.path.join(file, "__init__.py")return os.path.exists(init)def listmodules(self, allnames):modules = {}suffixes = importlib.machinery.EXTENSION_SUFFIXES[:]suffixes += importlib.machinery.SOURCE_SUFFIXESsuffixes += importlib.machinery.BYTECODE_SUFFIXESsorted = []for suff in suffixes:i = -len(suff)for name in allnames[:]:normed_name = os.path.normcase(name)if normed_name[i:] == suff:mod_name = name[:i]if mod_name not in modules:modules[mod_name] = Nonesorted.append((normed_name, name))allnames.remove(name)sorted.sort()return sorteddef _path_browser(parent): # htest #PathBrowser(parent, _htest=True)parent.mainloop()if __name__ == "__main__":from unittest import mainmain('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False)from idlelib.idle_test.htest import runrun(_path_browser)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。