我是新手来编写脚本。
我有一组JSON文件,如下所示:
sub-285345_task-EMOTION_acq-LR_idir-acq-LR_epi.json
sub-285345_task-EMOTION_acq-LR_idir-acq-RL_epi.json
sub-285345_task-EMOTION_acq-RL_idir-acq-LR_epi.json
sub-285345_task-EMOTION_acq-RL_idir-acq-RL_epi.json
现在查看每个.json文件名,我想在.json文件中包含键值对。例如:for file sub-285345_task-EMOTION_acq-LR_idir-acq-LR_epi.json
我想包括以下信息:
{
"PhaseEncodingDirection": "-i",
"TotalReadoutTime": 0.08346,
"IntendedFor": "func/sub-285345_task-rest_acq-LR_run-01_bold.nii.gz"
}
PhaseENcodingDirection
派生自文件名中的idir-acq-LR
。对于LR
-i
和RL
i
。
如果不是那么在python中使用bash脚本怎么能这样做呢?
感谢任何帮助。
答案 0 :(得分:0)
您可以尝试以下节点js脚本
var fs = require('fs');
fs.readdir('.', function(err, files) {
if (err) console.log(err);
files.forEach(function(file) {
var obj = {
"TotalReadoutTime": 0.08346,
};
if (file.indexOf("idir-acq-LR") > -1) {
console.log(file);
obj.PhaseEncodingDirection = "-i";
var intendedForPart1 = file.replace(/'-EMOTION-acq-LR'/g,'-rest_acq-LR');
var intendedForPart2 = intendedForPart1.replace(/'_epi.json'/g,'_run-01_bold.nii.gz');
obj.IntendedFor = 'func/' + intendedForPart2;
fs.writeFile(file, JSON.stringify(obj), 'utf-8');
} else if (file.indexOf("idir-acq-RL") > -1) {
console.log(file);
obj.PhaseEncodingDirection = "i";
var intendedForPart1 = file.replace(/'-EMOTION-acq-RL'/g,'-rest_acq-RL');
var intendedForPart2 = intendedForPart1.replace(/'_epi.json'/g,'_run-01_bold.nii.gz');
obj.IntendedFor = 'func/' + intendedForPart2;
//obj.IntendedFor = "func/sub-285345_task-rest_acq-RL_run-01_bold.nii.gz"
fs.writeFile(file, JSON.stringify(obj), 'utf-8');
}
});
});