python - Python:如果指定路径中的文件名包含字符串,则移动到文件夹
问题描述
这里是 python 的新手。我想创建一个脚本来扫描我的目录,如果文件名中包含某个字符串,那么它将自动移动到我选择的文件夹。试过这个,但没有运气:
import os
import shutil
import fnmatch
import glob
ffe_path = 'E:/FFE'
new_path = 'E:/FFE/Membership/letters'
keyword = 'membership'
os.chdir('E:/FFE/Membership')
os.mkdir('letters')
source_dir = 'E:/FFE'
dest_dir = 'E:/FFE/Membership/letters'
os.chdir(source_dir)
for top, dirs, files in os.walk(source_dir):
for filename in files:
if not filename.endswith('.docx'):
continue
file_path = os.path.join(top, filename)
with open(file_path, 'r') as f:
if '*membership' in f.read():
shutil.move(file_path, os.path.join(dest_dir, filename))
任何见解将不胜感激。
解决方案
一个简单的函数就可以解决问题:
def copyCertainFiles(source_folder, dest_folder, string_to_match, file_type=None):
# Check all files in source_folder
for filename in os.listdir(source_folder):
# Move the file if the filename contains the string to match
if file_type == None:
if string_to_match in filename:
shutil.move(os.path.join(source_folder, filename), dest_folder)
# Check if the keyword and the file type both match
elif isinstance(file_type, str):
if string_to_match in filename and file_type in filename:
shutil.move(os.path.join(source_folder, filename), dest_folder)
source_folder = 源文件夹的完整/相对路径
dest_folder = 目标文件夹的完整/相对路径(需要预先创建)
string_to_match = 文件将被复制的字符串基础
file_type (optional) = 如果只移动一个特定的文件类型。
当然,您可以通过设置忽略大小写的参数、如果目标文件夹不存在则自动创建目标文件夹、如果未指定关键字则复制特定文件类型的所有文件等来使此功能更好。此外,您还可以使用正则表达式来匹配文件类型,这将更加灵活。
推荐阅读
- php - 在现有的 Laravel 项目上安装 laravel/sail 时如何选择多个服务?
- twig - 如何使用 Twig 检查 Shopware 6 中的当前活动类别?
- python - 用于实现自组织地图的库 sompy
- ios - iOS 应用程序加载器卡在识别控件上
- r - 标题到数据框
- typescript - 如何在 Typescript 中定义具有一些可选指定属性以及一些必需指定属性的类型
- javascript - 以 JSON 格式存储 URL 的 CSS 数组
- java - 使用 OpenGLES 2.0 在 Android 上使用 Gaffer 的固定时间戳有时会卡顿
- python - Python新线程导致以前的线程不起作用
- python - 通过 ID 减去两个不同模型上的两列