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

时间:2016-03-18 06:36:32

标签: python utility

我正在使用Glob.Glob来搜索文件夹,并在那里找到我所有发票的子文件夹。为了简化这一点,我将把程序添加到上下文菜单中,并将路径作为第一部分,

import glob

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

     print(filename)

我会保留列表并将这些文件发送到打印机,在更高版本中,但是现在只需编写名称就足够了。

所以我的问题有两个:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我没有Python3.5,因此我可以设置标志recursive=True,因此我更愿意为您提供一个可以在任何Python版本上运行的解决方案(已知为一天)。

解决方案包括使用调用os.walk()来运行浏览目录和set内置类型。

最好使用set而不是list,稍后您需要更多代码来检查您要添加的目录是否已经列出。

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

因此,您可以将此解决方案适用于您的班级/方法:

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将其打印出来。