如何使用Python更仔细地搜索文件?
我从一个用户那里得到一个文件名并为他/她上传文件,我的问题是,由于我的代码,用户应该输入文件名来上传文件,但我想更仔细地搜索并上传所有文件,这些文件的名称与用户输入的名称相似,我如何编写它来代替此代码 示例:当用户输入Biology时,程序应该上传像Campbell Biology、My Biology或 我需要类似SQL语句的东西如何使用Python更仔细地搜索文件?,python,python-3.x,python-3.5,python-3.6,Python,Python 3.x,Python 3.5,Python 3.6,我从一个用户那里得到一个文件名并为他/她上传文件,我的问题是,由于我的代码,用户应该输入文件名来上传文件,但我想更仔细地搜索并上传所有文件,这些文件的名称与用户输入的名称相似,我如何编写它来代替此代码 示例:当用户输入Biology时,程序应该上传像Campbell Biology、My Biology或 我需要类似SQL语句的东西 try: requested_file = open(str(args[0]) + '.pdf', 'rb') 似乎您希望获取包含用户输入的特定搜索字符串
try:
requested_file = open(str(args[0]) + '.pdf', 'rb')
似乎您希望获取包含用户输入的特定搜索字符串的所有文件。有两种选择,第二种比第一种更彻底 选项1
您可以使用
glob.glob
函数传递通配符:
import glob
search = ... # your term here
for files in glob.glob('*%s*.pdf' % search):
... # do something with file
选项2
re.search
+os.listdir
。您可以遍历当前目录并使用正则表达式进行筛选
import os
import re
pattern = re.compile('.*%s.*\.pdf' %search, re.I)
for files in filter(pattern.search, os.listdir('.')):
... # do something with files
第二个选项为您提供了更多的灵活性
glob
受通配符语法的限制。我猜在is方案中,用户可能会上传很多他们不想上传的私人文件。@ForceBru程序搜索文件并发送给他们,而不是用户…您可以使用带有通配符的regex或glob。@cᴏʟᴅsᴘᴇᴇᴅ 你能给我举个例子来回答吗?也许你应该阅读标准glob
模块的文档。@Alibahari你也可以投票选出对你有帮助的答案。干杯