2015-05-01 4 views
-1

У меня есть папка с несколькими подпапками, содержащая несколько файлов. Я ищу, чтобы написать код matlab, который вставляет прокомментированный «отказ от ответственности» в верхней части каждого соответствующего кода [c, python (.py not .pyc), .urdf, .xml (.launch, .xacro, .config)]Использование Matlab Regex для вставки «отказа от ответственности» при начале нескольких кодов в нескольких подпапках

Мой текущий процесс состоит в том, чтобы сначала просмотреть каждую подпапку в основной папке. Затем выполните поиск в каждой подпапке для соответствующих кодов. Если соответствующий код найден, отказ от комментариев прокомментирован в верхней части кода ... (у каждого языка есть другое заявление об отказе)

Мне тяжело скомпилировать это все вместе. Любая помощь?

data_dir = 'C:thedirectorytomainfolder': 

topLevelFolder = data_dir; 
if topLevelFolder == 0 
    return; 
end 

% Get list of all subfolders. 
allSubFolders = genpath(topLevelFolder); 
remain = allSubFolders; 
listOfFolderNames = {}; 

while true 
    [singleSubFolder, remain] = strtok(remain, ';'); 
    if isempty(singleSubFolder) 
     break; 
    end 
    listOfFolderNames = [listOfFolderNames singleSubFolder]; 
end 

numberOfFolders = length(listOfFolderNames) 

%% Process all (wanted) files in those folders 
for k = 1 : numberOfFolders 
    % Get this folder and print it out. 
    thisFolder = listOfFolderNames{k}; 
    fprintf('Processing folder %s\n', thisFolder); 

    % Get .xml files. 
    filePattern = sprintf('%s/*.xml', thisFolder); 
    baseFileNames = dir(filePattern); 

filePattern = sprintf('%s/*.c', thisFolder); 
baseFileNames = [baseFileNames; dir(filePattern)]; 

numberOfImageFiles = length(baseFileNames) 

Я с трудом читает каждый соответствующий файл и вставляя правильный комментарий код в начале файла ... какой-либо помощи?

ответ

0

Большинство из matlab's methods for reading text files предполагают, что вы пытаетесь загрузить в основном числовые данные, но один из них может по-прежнему работать на вас.

Иногда fopen файлам, а затем читать строки с fgetl из fread. Поскольку вы делаете low-level IO, вам нужно также проверить конец файла while ~feof или somesuch. Вы можете сохранить каждую строку в массиве ячеек, добавить ее в массив ячеек вашего отказа, а затем записать обратно с помощью fwrite, преобразовывая ячейку обратно в строку с char.

Это будет довольно громоздко. Должен ли он быть матлабом? Если у вас есть опция, это может быть быстрее сделать на другом языке - в оболочке будет меньше двадцати строк, а ruby ​​/ python/perl больше ориентированы на обработку текста, что не является самой сильной точкой Matlab.