| wolffd@0 | 1 function [result status] = python(varargin) | 
| wolffd@0 | 2 %python Execute python command and return the result. | 
| wolffd@0 | 3 %   python(pythonFILE) calls python script specified by the file pythonFILE | 
| wolffd@0 | 4 %   using appropriate python executable. | 
| wolffd@0 | 5 % | 
| wolffd@0 | 6 %   python(pythonFILE,ARG1,ARG2,...) passes the arguments ARG1,ARG2,... | 
| wolffd@0 | 7 %   to the python script file pythonFILE, and calls it by using appropriate | 
| wolffd@0 | 8 %   python executable. | 
| wolffd@0 | 9 % | 
| wolffd@0 | 10 %   RESULT=python(...) outputs the result of attempted python call.  If the | 
| wolffd@0 | 11 %   exit status of python is not zero, an error will be returned. | 
| wolffd@0 | 12 % | 
| wolffd@0 | 13 %   [RESULT,STATUS] = python(...) outputs the result of the python call, and | 
| wolffd@0 | 14 %   also saves its exit status into variable STATUS. | 
| wolffd@0 | 15 % | 
| wolffd@0 | 16 %   See also SYSTEM, JAVA, MEX. | 
| wolffd@0 | 17 | 
| wolffd@0 | 18 %   Copyright 1990-2007 The MathWorks, Inc. | 
| wolffd@0 | 19 %   $Revision: 1.1.4.8 $ | 
| wolffd@0 | 20 | 
| wolffd@0 | 21 cmdString = ''; | 
| wolffd@0 | 22 | 
| wolffd@0 | 23 % Add input to arguments to operating system command to be executed. | 
| wolffd@0 | 24 % (If an argument refers to a file on the MATLAB path, use full file path.) | 
| wolffd@0 | 25 for i = 1:nargin | 
| wolffd@0 | 26     thisArg = varargin{i}; | 
| wolffd@0 | 27     if isempty(thisArg) || ~ischar(thisArg) | 
| wolffd@0 | 28         error('MATLAB:perl:InputsMustBeStrings', 'All input arguments must be valid strings.'); | 
| wolffd@0 | 29     end | 
| wolffd@0 | 30     if i==1 | 
| wolffd@0 | 31         if exist(thisArg, 'file')==2 | 
| wolffd@0 | 32             % This is a valid file on the MATLAB path | 
| wolffd@0 | 33             if isempty(dir(thisArg)) | 
| wolffd@0 | 34                 % Not complete file specification | 
| wolffd@0 | 35                 % - file is not in current directory | 
| wolffd@0 | 36                 % - OR filename specified without extension | 
| wolffd@0 | 37                 % ==> get full file path | 
| wolffd@0 | 38                 thisArg = which(thisArg); | 
| wolffd@0 | 39             end | 
| wolffd@0 | 40         else | 
| wolffd@0 | 41             % First input argument is pythonFile - it must be a valid file | 
| wolffd@0 | 42             error('MATLAB:perl:FileNotFound', 'Unable to find python file: %s', thisArg); | 
| wolffd@0 | 43         end | 
| wolffd@0 | 44     end | 
| wolffd@0 | 45 | 
| wolffd@0 | 46   % Wrap thisArg in double quotes if it contains spaces | 
| wolffd@0 | 47   if any(thisArg == ' ') | 
| wolffd@0 | 48     thisArg = ['"', thisArg, '"']; | 
| wolffd@0 | 49   end | 
| wolffd@0 | 50 | 
| wolffd@0 | 51   % Add argument to command string | 
| wolffd@0 | 52   cmdString = [cmdString, ' ', thisArg]; | 
| wolffd@0 | 53 end | 
| wolffd@0 | 54 | 
| wolffd@0 | 55 % Execute python script | 
| wolffd@0 | 56 errTxtNoPerl = 'Unable to find python executable.'; | 
| wolffd@0 | 57 | 
| wolffd@0 | 58 if isempty(cmdString) | 
| wolffd@0 | 59   error('MATLAB:perl:NoPerlCommand', 'No python command specified'); | 
| wolffd@0 | 60 elseif ispc | 
| wolffd@0 | 61   % PC | 
| wolffd@0 | 62   perlCmd = []; % fullfile('C:\Program Files (x86)\Python3x'); | 
| wolffd@0 | 63   cmdString = ['python' cmdString]; | 
| wolffd@0 | 64   perlCmd = ['set PATH=',perlCmd, ';%PATH%&' cmdString]; | 
| wolffd@0 | 65   [status, result] = dos(perlCmd); | 
| wolffd@0 | 66 else | 
| wolffd@0 | 67   [status ignore] = unix('which python'); %#ok | 
| wolffd@0 | 68   if (status == 0) | 
| wolffd@0 | 69     cmdString = ['python', cmdString]; | 
| wolffd@0 | 70     [status, result] = unix(cmdString); | 
| wolffd@0 | 71   else | 
| wolffd@0 | 72     error('MATLAB:python:NoExecutable', errTxtNoPython); | 
| wolffd@0 | 73   end | 
| wolffd@0 | 74 end | 
| wolffd@0 | 75 | 
| wolffd@0 | 76 % Check for errors in shell command | 
| wolffd@0 | 77 if nargout < 2 && status~=0 | 
| wolffd@0 | 78   error('MATLAB:perl:ExecutionError', ... | 
| wolffd@0 | 79         'System error: %sCommand executed: %s', result, cmdString); | 
| wolffd@0 | 80 end | 
| wolffd@0 | 81 |