组织文件并将其复制到新文件夹

2024-10-16 17:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在处理之前整理一些数据。在

我有一个文件夹的原始tiff文件(它们是来自无人机传感器的光栅带)。 Example of file structure

我想把这些文件移到新的单独的文件夹中。e、 g、IMG_001_1、IMG_001_2、IMG_001_3、IMG_001_4和IMG_001_5都被移到一个名为IMG_001的新文件夹中。为了使代码更简单,我可以更改文件的命名结构。在

另一个问题是文件夹中缺少一些图像。当前文件为IMG0016-IMG0054(无IMG0055)、IMG0056-IMG0086(无IMG0087)、IMG0087-IMG0161。这就是为什么我认为将新的图像文件夹从1-143重命名会更简单。在

我的主要问题是将文件移到新文件夹中-创建文件夹相当简单。在


Tags: 文件数据代码图像文件夹img光栅传感器
2条回答

玩了一小会儿,这个剧本出来了,它应该做你想做的:

import os
import shutil
import re

UNORG = "C:\\Users\joshuarb\Desktop\Unorganized_Images\\"
ORG = "C:\\Users\joshuarb\Desktop\Organized_Images\\"


def main():
    file_names = [os.path.join(UNORG, i) for i in get_files_of(UNORG)]
    for count in range(0, 143):
        current_dir = "{}IMG_{:04d}".format(ORG, count)
        os.makedirs(current_dir)
        move_files = get_files_to_move(file_names, count)
        print move_files
        for i in move_files:
            shutil.move(i, os.path.join(current_dir, os.path.basename(i)))


def get_files_to_move(file_names, count):
    return [i for i in file_names if re.match('.*IMG{}_.*'.format(count), i)]


def get_files_of(mypath):
    (dirpath, dirnames, filenames) = os.walk(mypath).next()
    return filenames


if __name__ == '__main__':
    main()

如您所见,代码没有注释。但如果有不清楚的地方,请随时询问;)

问题解决了!在

import os
import shutil

srcpath = "C:\Users\joshuarb\Desktop\Python_Test\UnorganizedImages"
srcfiles = os.listdir(srcpath)

destpath = "C:\Users\joshuarb\Desktop\Python_Test\OrganizedImages"

# extract the three letters from filenames and filter out duplicates
destdirs = list(set([filename[0:8] for filename in srcfiles]))


def create(dirname, destpath):
    full_path = os.path.join(destpath, dirname)
    os.mkdir(full_path)
    return full_path

def move(filename, dirpath):
    shutil.move(os.path.join(srcpath, filename)
            ,dirpath)

# create destination directories and store their names along with full  paths
targets = [
    (folder, create(folder, destpath)) for folder in destdirs
]

for dirname, full_path in targets:
    for filename in srcfiles:
        if dirname == filename[0:8]:
           move(filename, full_path)

相关问题 更多 >