很难根据多种条件将目录附加到文件名。你知道吗
其目的是将第一个父目录的名称加在仅满足所有3个条件的文件的文件名之前:
=camID
(例如…=d5
)结尾的目录的子目录内,并且['append_dir_to_filename'] =
设置为1
,并且raw_file
(扩展)。你知道吗结果如下:DSCN101_ND52000.nef
之前和之后:
CWD
01_camdir=d5 #dirname ends with "camID" 'd5', 'g7', 'a9'
/aaa/ .nef,.jpg,.avi,.wav
02_camdir=g7
/bbb/ddd/ .cr2,.jpg,.mp4
03_camdir=a9
/yyy/kkk/xxx/ .mp4,.jpg,.avi,.thm
04_camdir
/ .mp4,.jpg,.avi
CWD
01_camdir=d5
/aaa/aaa_.nef, aaa_.jpg, aaa_.avi, .wav #appended raw files
02_camdir=g7
/bbb/ddd/.cr2,.jpg,.mp4 #NOT appended, 'append_dir_to_filename'] = 0
03_camdir=a9
/yyy/kkk/xxx/ xxx_.mp4, xxx_.jpg, xxx_.avi, .thm #appended raw files
04_camdir
/.mp4,.jpg,.avi #do not appended, dir not in lookup
代码:
给出第1行的in <listcomp>
和KeyError: 'append_dir_to_filename'
错误:
camDirs = [os.path.join(cwd, x) for x in next(os.walk(cwd))[1] if x[-2:] in config['append_dir_to_filename']]
for camDir in camDirs:
camID = camDir[-2:]
for rootDir, _, files in os.walk(camDir):
prefix = os.path.basename(rootDir)
for file in files:
if (any(x for x in config[camID] 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)))
表格:
#'g7', 'd5' are called "camID"
config = {
'g7': {},
'd5': {},
'so': {},
}
config['g7']['append_dir_to_filename'] = 0 #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['a9']['append_dir_to_filename'] = 1 #set to 0, do not append dir name
config['a9']['raw_file'] = ('mp4', 'jpg', 'avi') #files to append
换句话说,从selectcameras(但不是从所有cameras)为select照片和视频文件类型(但不是其他文件类型)附加目录名。要附加哪些文件和哪些相机的信息在表中。你知道吗
例如(对不同相机类型的存储卡中的媒体文件进行排序):如果目录以…=d5
(或查找表中的其他内容)结尾,则根据查找表,目录中的所有raw_file
(nef, jpg, avi
)文件名都将附加一级父目录名字就像dirname_origfilename.nef
。如果['append_dir_to_filename'] = 0
,则不要附加目录名。一个例外:如果文件位于以…=d5
(或=g7
,或=so
结尾的目录中,则不要追加。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐