【问题标题】:Python - Getting file directory as user inputPython - 获取文件目录作为用户输入
【发布时间】:2018-05-06 00:50:27
【问题描述】:

从用户定义的目录中获取文件列表时遇到了一些问题。以下代码工作正常:

inputdirectory = r'C:/test/files'
inputfileextensions = 'txt'
files = glob.glob(inputdirectory+"*."+inputfileextensions)

但我想允许用户输入位置。我试过以下代码:

inputdirectory = input("Please type in the full path of the folder containing your files:    ")
inputfileextensions = input("Please type in the file extension of your files:    ")
files = glob.glob(inputdirectory+"*."+inputfileextensions)

但它不起作用。不会出现错误消息,但文件返回为空。我试过用引号输入目录,用正斜杠和反斜杠,但不能让它工作。我也尝试使用 'r' 将输入转换为原始字符串,但语法可能是错误的。有什么想法吗?

【问题讨论】:

  • 尝试打印:inputdirectory+"*."+inputfileextensions

标签: python file glob rawstring


【解决方案1】:

尝试使用os.path.join 加入路径。它将处理斜线问题。

import os
...
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions))

【讨论】:

    【解决方案2】:

    不太确定第一个版本如何适合您。定义变量的方式,你应该有输入到 glob 是这样的:

    inputdirectory+"*."+inputfileextensions == "C:\test\files*.txt"
    

    查看上述值,您可以意识到这不是您想要实现的目标。相反,您需要使用反斜杠运算符连接两条路径。比如:

    os.path.join(inputdirectory, "*."+inputfileextensions) == "C:\test\files\*.txt"
    

    通过此更改,无论输入是来自用户还是预定义的,代码都应该可以正常工作。

    【讨论】:

      【解决方案3】:

      示例的工作代码,带有递归搜索。

      #!/usr/bin/python3
      
      import glob
      import os
      
      dirname = input("What is dir name to search files? ")
      path = os.path.join(dirname,"**")
      for x in glob.glob(path, recursive=True):
          print(x)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 2017-03-16
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多