从查找表

时间:2017-11-09 03:29:02

标签: python python-3.x

如何根据01值以及存储在查找表中的fileextension 将父目录的名称附加到文件名中?

    在CWD内找到所有以=camID结尾的目录,然后:
  • 如果append_dir_to_filename0:什么都不做
  • 如果append_dir_to_filename1:那么:
  • camID内部以递归方式查找为raw_file列出的所有以camID扩展名结尾的文件,然后:
  • 将1级父目录名称添加到所有raw_file文件名
  • 例外:为raw_files目录中的camID dir(即不在camID子网站中)CWD 01_camdirab=d5 /aaa/ .nef,.jpg,.avi,.wav 02_camdirxyz=g7 /bbb/ddd/ .cr2,.jpg,.mp4 03_camdire012345=g7 /yyy/kkk/xxx/ .mp4,.jpg,.avi,.thm 04_camdire012345 / .mp4,.jpg,.avi CWD 01_camdirab=d5 /aaa/aaa_.nef, aaa_.jpg, aaa_.avi, .wav #appended raw files 02_camdirxyz=so /bbb/ddd/.cr2,.jpg,.mp4 #not appended, 'append_dir_to_filename'] = 0 03_camdire012345=a9 /yyy/kkk/xxx/ xxx_.mp4, xxx_.jpg, xxx_.avi, .thm #appended raw files 04_camdire012345 /.mp4,.jpg,.avi #do not appended, dir not in lookup, 前缀dir名称。

文件名之前之后

cameraDirs = [os.path.join(cwd, x) for x in next(os.walk(cwd))[1] if x[-2:] in config['append_dir_to_filename']]
    for cameraDir in cameraDirs:
        cameraShortName = cameraDir[-2:]
        for rootDir, _, files in os.walk(cameraDir):
            prefix = os.path.basename(rootDir)
            for file in files:
                if (any(x for x in config[cameraShortName] if file.endswith(x)) and prefix[-2:] not in config['append_dir_to_filename']):
                    os.rename(os.path.join(rootDir, file), os.path.join(rootDir, "{}_{}".format(prefix, file)))

代码(如果查找表具有不同的结构[首先是对象,然后是键],则效果非常好,但我需要更改为下面的查找表结构。

config = {
    'g7': {},
    'd5': {},
    'so': {},
}

       #g7, d5, so  called "camID"

config['g7']['append_dir_to_filename'] = 1          #set to 1, append dir name
config['g7']['raw_file'] = ('cr2', 'jpg', 'mp4')    #files to append

config['d5']['append_dir_to_filename'] = 1          #set to 1, append dir name
config['d5']['raw_file'] = ('nef', 'jpg', 'avi')    #files to append

config['so']['append_dir_to_filename'] = 0          #set to 0, do not append dir name
config['so']['raw_file'] = ('mp4', 'jpg', 'avi')    #files to append

查找表:

=d5

换句话说,我想从选择相机(但不是所有相机)附加选择照片和视频文件类型(但不包括其他文件类型)的目录名称)。有关哪些文件和要添加的摄像机的信息位于查找表中。

例如(从不同摄像机类型的存储卡中排序媒体文件):如果目录以... raw_file(或查找表中的任何其他内容)结尾,然后,根据查找表, ... nef, jpg, avi目录中的所有=d5dirname_origfilename.nef)文件名将附加1级父目录名称,如['append_dir_to_filename'] = 0。如果是=d5,则不要附加目录名称。一个例外:如果文件位于以... =g7(或=sofrom flask_login.utils import current_user class MyView(ModelView): @expose('/') def index(self): return self.render('admin/index.html') def is_accessible(self): return current_user.is_authenticated() # admin management setup admin.add_view(MyView(User, db.session)) admin.add_view(MyView(Post, db.session)) path = op.join(os.path.abspath(__file__ + "/../../"), 'static') # need to get parent path of this code admin.add_view(FileAdmin(path, '/static/', name='Static Files')) ...)结尾的目录中,则不要附加。

0 个答案:

没有答案