importing with .m instead of .py

Ishwor Gurung ishwor.gurung at
Fri Sep 25 18:15:09 CEST 2009

Refer to

When a module named spam is imported, the interpreter searches for a
file named in the current directory, and then in the list of
directories specified by the environment variable PYTHONPATH. This has
the same syntax as the shell variable PATH, that is, a list of
directory names. When PYTHONPATH is not set, or when the file is not
found there, the search continues in an installation-dependent default
path; on Unix, this is usually .:/usr/local/lib/python.

Having said that, please see below.

> I would like to import Matlab/Octave files of the .m sort into Python
> that look like this.
> # comment
> y=[1,2,3,4,5\
> ,6,7,8,9];
> # comment
> The only problem is I have to change the extensions from .m to .py. Is
> there a way to get python to import files that don't end in .py?

You can try this for single file. Pretty trivial-
$ cat foo.m
$ export PYTHONSTARTUP=foo.m
$ python
Python 2.6.1 (r261:826, Sep 17 2009, 01:16:52)
[GCC 4.3.2] on linux2
[Unladen Swallow 2009Q3]
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'y']
>>> y
[1, 2, 3]

Another way:
>>> f_ = open('foo.m','r');
>>> j = f_.xreadlines()
>>> for i in j.xreadlines():
...     print i

Another way:
>>> import os;
>>> matlab_files=[];
>>> for root, dirs, files in os.walk('.'):
...     for i in files:
...             if i.endswith(".m"):
...                     matlab_files.append(i);
>>> matlab_files
['foo.m', 'bar.m']
>>> for x in matlab_files:
...     execfile(x);
>>> dir()
['__builtins__', '__doc__', '__name__', 'dirs', 'files', 'i',
'matlab_files', 'os', 'root', 'x', 'y', 'z']
>>> x
>>> y
[1, 2, 3]
>>> z
[3, 2, 1]

$ cat foo.m
$ cat bar.m

These sort of task are pretty trivial to do. You should take some time
to read through the documentation.. and oh don't be such a wanderer
loosing sight of such good resource such as :-)
Ishwor Gurung

More information about the Python-list mailing list