0

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

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

4

3 回答 3

1

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

import os
...
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions))
于 2017-11-22T10:26:32.210 回答
1

不太确定第一个版本如何为您工作。定义变量的方式,你应该有 glob 的输入,如下所示:

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

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

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

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

于 2017-11-22T10:33:17.033 回答
-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)
于 2020-07-31T16:08:51.343 回答