获取我在 Python 中右键单击的最后一个位置的文件夹路径

Getting the Folder Path of the last location I right clicked in Python

我正在使用 Glob.Glob 搜索一个文件夹,以及其中的子文件夹以查找我拥有的所有发票。为了简化,我将把程序添加到上下文菜单中,并将路径作为

的第一部分
import glob

for filename in glob.glob(path + "/**/*.pdf", recursive=True):

     print(filename)

我会让它保留列表并将这些文件发送到打印机,在以后的版本中,但现在只写名字就足够了。

所以我的问题是双重的:

  1. 我写这篇文章的方式有什么根本性的错误吗?
  2. 任何人都可以指出如何实际捕获文件夹路径并将其作为路径变量提供的方向吗?

你应该看看这个问题:Python script on selected file。它显示了如何在上下文菜单中设置 "Sent To" 命令。此命令调用 python 脚本并提供通过 sys.argv[1] 发送的文件名。我假设这也适用于目录。

我没有 Python3.5 所以我可以设置标志 recursive=True,所以我更愿意为您提供一个解决方案,您可以 运行 在任何 [=31] =] 版本(目前已知)。

解决方案是使用调用 os.walk() to run explore the directories and the set 内置类型。

最好使用 set 而不是 list,因为后面的这个你需要更多代码来检查你要添加的目录是否没有列出。

所以基本上您可以保留两套:一套用于您要打印的文件的名称,另一套用于目录及其子文件夹。

因此您可以将此解决方案应用到您的 class/method:

import os

path = '.' # Any path you want
exten = '.pdf'
directories_list = set()
files_list = set()
# Loop over direcotries
for dirpath, dirnames, files in os.walk(path):
    for name in files:
        # Check if extension matches
        if name.lower().endswith(exten):
           files_list.add(name)
           directories_list.add(dirpath)

然后您可以遍历 directories_listfiles_list 来打印它们。