【发布时间】:2021-06-17 20:39:33
【问题描述】:
我是编码新手,我正在创建元数据转换函数,新文件的格式有日期和时间戳,格式为 yyyymmdd_hhmmss。我使用一系列 if 语句创建了以下代码,因为原始元数据将日期/月份列为单个数字(必要时加倍。我假设有一种更优雅的方式来完成此任务并用于学习目的和可读性/简单性. 任何建议都将不胜感激!任何其他简化代码的建议也很感激,谢谢。
for fileExt in fpath:
with open(fileExt) as f:
data = json.loads(f.read())
if 'animalID' in data:
ext=fileExt.replace('\\metaData.json', '\\Miniscope\\metaData.json')
animalID=data['animalID']
timeStamp=data['recordingStartTime']
year=str(timeStamp['year'])
month=str(timeStamp['month'])
if len(month) < 2:
month=str(0)+month
day=str(timeStamp['day'])
if len(day) < 2:
day=str(0)+day
second=str(timeStamp['second'])
if len(second) < 2:
second=str(0)+second
minute=str(timeStamp['minute'])
if len(minute) < 2:
minute=str(0)+minute
hour=str(timeStamp['hour'])
if len(hour) < 2:
hour=str(0)+hour
date=year+month+day+'_'+hour+minute+second
with open(ext) as d:
data2 = json.loads(d.read())
frameRate=float(data2['frameRate'])
jdict ={'origin':animalID,'fps':frameRate,'date':date,
'orig_meta':[data,data2]}
jsonFile=json.dumps(jdict,indent=4)
newFileName=ext.replace('\\metaData.json', '\\metaDataTif.json')
n = open(newFileName, 'w')
n.write(jsonFile)
n.close()
【问题讨论】:
-
Code Review 更适合于此。所以不是正确的地方。
-
将整数
v补零到两位数字所需要做的就是f"{v:02}"。这相当于"{:02}".format(v)或"%02d" % v。 -
谢谢,这有帮助,我什至不知道一个好的搜索词可以用来找到答案。
-
你也可以组合它们。例如,要获取 MM/DD/YYYY,您可以使用
f"{month:02}/{day:02}/{year:04}",或"{:02}/{:02}/{:04}".format(month, day, year),或"%02/%02/%04" % (month, day, year)