Python - 获取文件目录作为用户输入

时间:2017-11-22 10:16:40

标签: python file glob rawstring

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

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'将输入转换为原始字符串,但可能是语法错误。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

不太确定第一个版本如何为您服务。定义变量的方式,你应该像glob那样输入glob:

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

看看上面的价值,你可以意识到它不是你想要实现的东西。相反,您需要使用反斜杠运算符连接两个路径。类似的东西:

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

通过此更改,无论输入是从用户获取还是预定义,代码都应该起作用。

答案 2 :(得分:-1)

示例代码,具有递归搜索功能。

#!/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)