python-3.x - 如何使用 Tkinter 在 Python 中使用系统中的文件夹名称获取文件夹路径
问题描述
我想通过使用 python 搜索特定文件夹名称来获取完整的文件夹路径
输入
示例输入文件夹名称:Myfile_data
我想在整个系统中搜索文件夹名称并获取特定文件夹的位置
预期输出
示例完整文件夹路径:C:\Users\DELL\Documents\Myfile_data
请帮忙解决这个问题。
先感谢您
解决方案
这会在整个操作系统中搜索文件或目录。
import os, re
def find_files(filename, search_path, files_or_dirs='files', is_regex=False):
result = []
# Walking top-down from the root
for root, dirs, files in os.walk(search_path):
if files_or_dirs == 'files':
for file in files:
if re.search(filename, file) if is_regex else file == filename:
result.append(os.path.join(root, file))
else:
for dir in dirs:
if re.search(filename, dir) if is_regex else dir == filename:
result.append(os.path.join(root, dir))
return result
要使用它,只需执行以下操作:
results = find_files('file.txt', 'C:\\', 'files')
print(results)
# will print something like
# ['C:\example\file.txt', ...]
要搜索目录而不是文件,请执行以下操作:
results = find_files('mydir', 'C:\\', 'dirs')
print(results)
# will print something like
# ['C:\example\mydir\', ...]
要使用正则表达式搜索文件,请执行以下操作:
results = find_files(r'.+\.txt', 'C:\\', 'files', is_regex=True)
print(results)
# will print something like
# ['C:\example\file.txt', 'C:\Users\DELL\example.txt', ...]
这会在整个操作系统中搜索文件或目录,但会返回一个生成器,这基本上意味着您可以在for ... in ...
循环中使用它来获取实时结果,而无需等待搜索完成。
def find_files_gen(filename, search_path, files_or_dirs='files'):
# Walking top-down from the root
for root, dirs, files in os.walk(search_path):
if files_or_dirs == 'files':
for file in files:
if file == filename:
yield os.path.join(root, file)
else:
for dir in dirs:
if dir == filename:
yield os.path.join(root, dir)
要使用此方法,如下所示:
for result in find_files_gen('file.txt', 'C:\\', 'files'): # or 'dirs'
print(result)
推荐阅读
- function - 示例函数在 InfluxDB 中如何工作
- oracle - 为持有集合的 Java 实体获取数据库记录
- java - RecyclerView 将 MaterialToggleButtonGroup 添加到父 LinearLayoutManager
- python - 正则表达式的日期和同时查找 BP 值
- c - 在 C 中使用 realpath() 时潜在的缓冲区溢出
- macos - 日期算术在 macos bash 中无法正常工作
- java - 将数据插入另一个命名模型后,模型更改侦听器停止工作
- powershell - 获取与特定域有联系的所有 DistributionGroups 和 Members
- python - 提取字典列表中的字典子集,直到找到特定键
- java - 在 Java 中发送 HTTP POST 请求