【问题标题】:Python in Sublime Text 3: oslist dir; list specific extensions onlySublime Text 3 中的 Python:oslist 目录;仅列出特定的扩展名
【发布时间】:2020-08-07 02:02:36
【问题描述】:

我正在尝试对 this Sublime Text 3 plugin 做一些小调整,这将是我第一次涉足 Python。

当在键盘中输入命令[[ 时,该插件会提供一个 Markdown 文件列表。问题是其他文件出现在我不想出现的列表中!

根据我收集到的信息,大部分命令都需要os.listdir(directory)。我知道以前曾询问过尝试仅列出带有 os.listdir 的特定扩展名,例如 herehere,但我只是不明白如何将这些答案实现到我拥有的代码中.像其他人所寻求的那样,我正在尝试弄清楚如何使用 os.listdir 显示 only .md 文件,但例外是我希望在此插件的范围内这样做.

插件的完整代码可在here 获得。

下面是一段摘录,其中包括我认为与我的困境更相关的细节。

class GetWikiLinkCommand(sublime_plugin.TextCommand):
    def on_done(self, selection):
        if selection == -1:
            self.view.run_command(
                "insert_wiki_link", {"args":
                {'text': '[['}})
            return
        self.view.run_command(
            "insert_wiki_link", {"args":
            {'text': '[['+self.modified_files[selection]+']]'}})

    def run(self, edit):
        settings = sublime.load_settings('MyWiki.sublime-settings')
        directory = settings.get('wiki_directory')
        directory = os.path.expanduser(directory)
        extension = settings.get('wiki_extension')

        self.outputText = '[['
        self.files = os.listdir(directory) 
        self.modified_files = [item.replace(extension,"") for item in self.files]
        self.view.window().show_quick_panel(self.modified_files, self.on_done)

谢谢!!!

【问题讨论】:

  • 在简要查看“插件的完整代码”之后,我会说您还需要import os.path。请注意import os 不会自动也导入os.path。您正在导入 resubprocess 但未在代码中使用这些模块。我想说你需要的是:import sublime, sublime_plugin, os, os.path.

标签: python sublimetext3 sublimetext sublime-text-plugin


【解决方案1】:

可能最简单的解决方法是更改​​此行:

self.files = os.listdir(directory)

self.files = [f for f in os.listdir(directory) if f.endswith('.md')]

或者,如果您将 globos.path 添加到导入语句中,您可以这样做:

self.files = [os.path.basename(p) for p in glob.glob(os.path.join(directory, '*.md'))]

如果 glob 能够更快地过滤文件,这可能会更高性能 - 不确定。

【讨论】:

  • 这成功了!谢谢!!看起来我在正确的轨道上,但我没有意识到方括号在正确实现函数中的重要性(如果函数不是正确的术语,请原谅)。感谢您的帮助,我希望您知道我在去年六月访问了您的网页并最终将其添加到我的书签中。很高兴在这里见到你。
  • 真是巧合!听到有人发现我的网站很有趣总是很高兴 :) 很高兴我能提供帮助。其中带有“for”的括号指定了“列表理解”,您可以在此处阅读更多信息:docs.python.org/3/tutorial/…
猜你喜欢
  • 2013-08-10
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
相关资源
最近更新 更多