Python 在 Sublime Text 3 中:oslist 目录;仅列出特定的扩展
Python in Sublime Text 3: oslist dir; list specific extensions only
我正在尝试对 this Sublime Text 3 plugin 做一些小调整,这是我第一次尝试 Python。
当在键盘中输入命令 [[
时,该插件会提供一个 Markdown 文件列表。问题是我不想出现的其他文件出现在列表中!
根据我收集到的信息,大部分命令需要 os.listdir(directory)
。我知道尝试仅列出带有 os.listdir 的特定扩展名之前已被询问过,例如 here and here,但我只是不明白如何将这些答案实现到我拥有的代码中.就像其他人所寻求的那样,我试图弄清楚如何使用 os.listdir 仅显示 .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)
谢谢!!!
可能最简单的解决方法是更改此行:
self.files = os.listdir(directory)
到
self.files = [f for f in os.listdir(directory) if f.endswith('.md')]
或者,如果您将 glob
和 os.path
添加到导入语句,您可以:
self.files = [os.path.basename(p) for p in glob.glob(os.path.join(directory, '*.md'))]
如果 glob 能够更快地过滤文件,这可能会更高效 - 不确定。
我正在尝试对 this Sublime Text 3 plugin 做一些小调整,这是我第一次尝试 Python。
当在键盘中输入命令 [[
时,该插件会提供一个 Markdown 文件列表。问题是我不想出现的其他文件出现在列表中!
根据我收集到的信息,大部分命令需要 os.listdir(directory)
。我知道尝试仅列出带有 os.listdir 的特定扩展名之前已被询问过,例如 here and here,但我只是不明白如何将这些答案实现到我拥有的代码中.就像其他人所寻求的那样,我试图弄清楚如何使用 os.listdir 仅显示 .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)
谢谢!!!
可能最简单的解决方法是更改此行:
self.files = os.listdir(directory)
到
self.files = [f for f in os.listdir(directory) if f.endswith('.md')]
或者,如果您将 glob
和 os.path
添加到导入语句,您可以:
self.files = [os.path.basename(p) for p in glob.glob(os.path.join(directory, '*.md'))]
如果 glob 能够更快地过滤文件,这可能会更高效 - 不确定。