繁体   English   中英

Python 脚本,用于在一组文件夹中使用部分名称搜索文件并将它们排序到新的文件夹结构中

[英]Python script to search for a file using partial name in a set of folders and sort them into a new folder structure

我第一次尝试自动化 python 脚本。 我有一组特定文件夹结构中的文件

source1
    -date1 
        -date1_time1_xyz.csv
        -date1_time3_abc.doc
    -date2 
        -date2_time1_xyz.csv
        -date2_time3_abc.doc
source2
    -date1
        -date1_time1_dfg.csv
        -date1_time2_abc.doc
    -date2
        -date2_time1_xyz.csv
        -date2_time3_abc.doc



但是我想要一个文件夹结构,它将所有日期的所有.csv 组合到一个名为 meta 的文件夹中,并将所有日期的 .doc 组合到另一个名为 docs 的文件夹中,如下所示:

date1
    -meta
        -date1_time1_xyz.csv
        -date1_time1_dfg.csv
    -docs
        -date2_time3_abc.doc
        -date2_time2_abc.doc

我编写了一个脚本来将这些视频分类到我需要的文件夹结构中。 所以我想我会分享我的解决方案(也许它可能会帮助某人)。 欢迎大家提出改进意见!

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 20 09:57:51 2021

Example usage: 

#specify source folder
ogpath = '/home/data 
(data should contain folders source1, source2, so on..)

#specify destination folder
new_path = '/home/tester/new'

#specify which recording to aggregate
filename = "date1_time1"


"""
import os, shutil 
from pathlib import Path
import glob

#specify source folder
ogpath = '/home/data'

#specify destination folder
new_path = '/home/tester/new'

#specify which files to aggregate
filename = "date1_time1"

#create new folder for sorted data
dst_dirpath = os.path.join(new_path,'sorted_data')
print(dst_dirpath)
if not os.path.isdir(dst_dirpath):
    os.mkdir(dst_dirpath)

#create new path for each date
record_path = os.path.join(dst_dirpath, filename[:4]) #take only date1 to create the folder
if not os.path.isdir(record_path):
    os.mkdir(record_path)

#create sub path for meta
meta_path = os.path.join(record_path,'meta')
if not os.path.isdir(meta_path):
    os.mkdir(meta_path)

#create sub path for docs
docs_path = os.path.join(record_path,'docs')
if not os.path.isdir(docs_path):
    os.mkdir(docs_path)    

#search for files with same name in all folders
for file in glob.glob(ogpath+'/**/'+filename[:4]+'/*'+filename+'*.doc'): 
    shutil.copy(file, docs_path)

for file in glob.glob(ogpath+'/**/**/*'+filename+'*.csv'):
    shutil.copy(file, meta_path)



暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM