使用bash从文件名输入的JSON文件

时间:2016-08-17 22:34:48

标签: python json bash terminal

我是新手来编写脚本。

我有一组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 -iRL i

如果不是那么在python中使用bash脚本怎么能这样做呢?

感谢任何帮助。

1 个答案:

答案 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');
        }

    });
});