On 28 March 2018 at 10:23,  <rishika21...@gmail.com> wrote:
> So I am using the following code to call a Matlab(2016a) function from 
> python(3.6).
>
>>>import win32com.client
>>>h = win32com.client.Dispatch('matlab.application')
>>>h.Execute ("plot([0 18], [7 23])")
>
> When I am using the 'Execute' statement to run a matlab file from python, I 
> use the statement on python:
>>>h.Execute ("run('H:\rishika\MATLAB\filewrite.m')")
>
> Now this gives the error on python:
> '??? Error: String is not terminated properly.\n\n'
>
> On the other hand, when I am running the command:
>>>run('H:\rishika\MATLAB\filewrite.m')
> on command prompt of Matlab, it is working. But when run from python, the 
> statement isn't executing.
>
> But when I am executing
>>>h.Execute ("disp('hi')")
> on python, I am getting the proper output:
> 'hi\n'
>
> Kindly point out my mistake.

Your string in the command

> When I am using the 'Execute' statement to run a matlab file from python, I 
> use the statement on python:
>>>h.Execute ("run('H:\rishika\MATLAB\filewrite.m')")

uses unescaped backslashes, so \r is getting seen as Carriage Return
in the string being sent to Matlab. The \f will also be seen as a form
feed. I imagine that would confuse Matlab.

You should either double the backslashes

    >>>h.Execute ("run('H:\\rishika\\MATLAB\\filewrite.m')")

or use raw strings

    >>>h.Execute ("run(r'H:\rishika\MATLAB\filewrite.m')")

Paul
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to