【问题标题】:Getting the Folder Path of the last location I right clicked in Python获取我在 Python 中右键单击的最后一个位置的文件夹路径
【发布时间】:2016-03-18 06:36:31
【问题描述】:

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

import glob

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

     print(filename)

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

所以我的问题是双重的:

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

【问题讨论】:

    标签: python utility


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我没有 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_list 和 files_list 以将它们打印出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 2022-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多