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
+