我是 Python 新手,我想将我的 matlab 变量传递给 Python。以下代码采用 python 脚本和参数。例如:python('square.py', '5')
。是否可以通过这个 matlab 脚本将变量传递给 Python?例如:
python('square.py', 'value')
function [result status] = python(varargin)
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:python: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:python: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
errTxtNoPython = 'Unable to find Python executable.';
if isempty(cmdString)
error('MATLAB:python:NoPythonCommand', 'No python command specified');
elseif ispc
% PC
pythonCmd = '/usr/bin/python';
cmdString = ['python', cmdString];
pythonCmd = ['set PATH=',pythonCmd, ';%PATH%&' cmdString];
[status, result] = dos(pythonCmd);
else
% UNIX
[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:python:ExecutionError', ...
'System error: %sCommand executed: %s', result, cmdString);
end