Я склонен следовать ПОСТЕПЕННО Руководство Стиля кодирования C++ .
Вы можете использовать ispc / isunix / ismac функции для определения платформы или даже использование функции computer для получения дополнительной информации о машине
if ispc
datafile = csvread('C:\Documents and Settings\Me\MyPath\inputfile.csv');
else
datafile = csvread('/home/Me/MyPath/inputfile.csv');
end
Чтобы добавить незначительный момент к существующим хорошим ответам, я обычно использую fileparts
и fullfile
при построении путей, которые должны работать на обоих Варианты UNIX и Windows, так как они умеют правильно работать с косой чертой.
Если структуры каталогов находятся в вашем домашнем каталоге, вы можете попробовать создать один путь, который можно использовать на обеих платформах, следующим образом (мой Matlab немного груб, поэтому некоторые синтаксисы могут быть 100%):
Создайте путь следующим образом (filesep - это функция, которая возвращает разделитель файлов для платформы, на которой вы работаете )
filepath = [userdir filesep 'MyPath' filesep 'inputfile.csv']
Прочтите файл
datafile = csvread (filepath)
В противном случае используйте ответ Амроса. Это проще.
Чтобы продолжить ответ Амро, Я собирался просто сделать комментарий, но боролся с форматированием кода.
Я бы предпочел отделить выбор ОС от прочитанного файла.
if ispc
strFile = 'C:\Documents and Settings\Me\MyPath\inputfile.csv';
else
strFile = '/home/Me/MyPath/inputfile.csv';
end
try
datafile = csvread(strFile);
catch
% setup any error handling
error(['Error reading file : ',strFile]);
end
Таким образом, если мне нужно изменить способ чтения файла, возможно, с помощью другой функции, нужно будет изменить только одну строку. Кроме того, он поддерживает простую и локальную обработку ошибок, один оператор ошибки может обрабатывать любой формат.
В дополнение к использованию различных методов здесь для работы с различиями в путях и разделителях файлов, вам следует подумать о том, чтобы просто избегать кодирования абсолютных путей в ваших скриптах. Если вам необходимо их использовать, постарайтесь поместить их в как можно меньше файлов. Это упростит вам процесс переноса.
Некоторые идеи:
fileRoot
в некоторую раннюю точку входа или в файл конфигурации. Используйте fullfile
или любой другой метод для построения полного пути.