Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python更仔细地搜索文件?_Python_Python 3.x_Python 3.5_Python 3.6 - Fatal编程技术网

如何使用Python更仔细地搜索文件?

如何使用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') 似乎您希望获取包含用户输入的特定搜索字符串

我从一个用户那里得到一个文件名并为他/她上传文件,我的问题是,由于我的代码,用户应该输入文件名来上传文件,但我想更仔细地搜索并上传所有文件,这些文件的名称与用户输入的名称相似,我如何编写它来代替此代码

示例:当用户输入Biology时,程序应该上传像Campbell Biology、My Biology或

我需要类似SQL语句的东西

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你也可以投票选出对你有帮助的答案。干杯