Mercurial > hg > camir-aes2014
diff core/tools/python.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tools/python.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,81 @@ +function [result status] = python(varargin) +%python Execute python command and return the result. +% python(pythonFILE) calls python script specified by the file pythonFILE +% using appropriate python executable. +% +% python(pythonFILE,ARG1,ARG2,...) passes the arguments ARG1,ARG2,... +% to the python script file pythonFILE, and calls it by using appropriate +% python executable. +% +% RESULT=python(...) outputs the result of attempted python call. If the +% exit status of python is not zero, an error will be returned. +% +% [RESULT,STATUS] = python(...) outputs the result of the python call, and +% also saves its exit status into variable STATUS. +% +% See also SYSTEM, JAVA, MEX. + +% Copyright 1990-2007 The MathWorks, Inc. +% $Revision: 1.1.4.8 $ + +cmdString = ''; + +% Add input to arguments to operating system command to be executed. +% (If an argument refers to a file on the MATLAB path, use full file path.) +for i = 1:nargin + thisArg = varargin{i}; + if isempty(thisArg) || ~ischar(thisArg) + error('MATLAB:perl:InputsMustBeStrings', 'All input arguments must be valid strings.'); + end + if i==1 + if exist(thisArg, 'file')==2 + % This is a valid file on the MATLAB path + if isempty(dir(thisArg)) + % Not complete file specification + % - file is not in current directory + % - OR filename specified without extension + % ==> get full file path + thisArg = which(thisArg); + end + else + % First input argument is pythonFile - it must be a valid file + error('MATLAB:perl:FileNotFound', 'Unable to find python file: %s', thisArg); + end + end + + % Wrap thisArg in double quotes if it contains spaces + if any(thisArg == ' ') + thisArg = ['"', thisArg, '"']; + end + + % Add argument to command string + cmdString = [cmdString, ' ', thisArg]; +end + +% Execute python script +errTxtNoPerl = 'Unable to find python executable.'; + +if isempty(cmdString) + error('MATLAB:perl:NoPerlCommand', 'No python command specified'); +elseif ispc + % PC + perlCmd = []; % fullfile('C:\Program Files (x86)\Python3x'); + cmdString = ['python' cmdString]; + perlCmd = ['set PATH=',perlCmd, ';%PATH%&' cmdString]; + [status, result] = dos(perlCmd); +else + [status ignore] = unix('which python'); %#ok + if (status == 0) + cmdString = ['python', cmdString]; + [status, result] = unix(cmdString); + else + error('MATLAB:python:NoExecutable', errTxtNoPython); + end +end + +% Check for errors in shell command +if nargout < 2 && status~=0 + error('MATLAB:perl:ExecutionError', ... + 'System error: %sCommand executed: %s', result, cmdString); +end +