Python - 获取文件目录作为用户输入
Python - Getting file directory as user input
从用户定义的目录中获取文件列表时遇到一些问题。以下代码工作正常:
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)
但是没用。没有出现错误消息,但文件 returns 为空。我试过在目录中输入引号、正斜杠和反斜杠,但无法正常工作。我也尝试过使用 'r' 将输入转换为原始字符串,但语法可能是错误的。有什么想法吗?
尝试加入 os.path.join
的路径。它将处理斜线问题。
import os
...
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions))
不太确定第一个版本如何适合您。定义变量的方式,您应该将 glob 输入如下:
inputdirectory+"*."+inputfileextensions == "C:\test\files*.txt"
查看以上值,您会发现这不是您想要实现的目标。相反,您需要使用反斜杠运算符连接这两个路径。类似于:
os.path.join(inputdirectory, "*."+inputfileextensions) == "C:\test\files\*.txt"
进行此更改后,无论输入是来自用户还是预定义,代码都应该可以正常工作。
示例的工作代码,带有递归搜索。
#!/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)
从用户定义的目录中获取文件列表时遇到一些问题。以下代码工作正常:
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)
但是没用。没有出现错误消息,但文件 returns 为空。我试过在目录中输入引号、正斜杠和反斜杠,但无法正常工作。我也尝试过使用 'r' 将输入转换为原始字符串,但语法可能是错误的。有什么想法吗?
尝试加入 os.path.join
的路径。它将处理斜线问题。
import os
...
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions))
不太确定第一个版本如何适合您。定义变量的方式,您应该将 glob 输入如下:
inputdirectory+"*."+inputfileextensions == "C:\test\files*.txt"
查看以上值,您会发现这不是您想要实现的目标。相反,您需要使用反斜杠运算符连接这两个路径。类似于:
os.path.join(inputdirectory, "*."+inputfileextensions) == "C:\test\files\*.txt"
进行此更改后,无论输入是来自用户还是预定义,代码都应该可以正常工作。
示例的工作代码,带有递归搜索。
#!/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)