importing with .m instead of .py

Wanderer wanderer at dialup4less.com
Fri Sep 25 19:16:00 CEST 2009


On Sep 25, 12:15 pm, Ishwor Gurung <ishwor.gur... at gmail.com> wrote:
> Wanderer
> Hi
> Refer tohttp://docs.python.org/tutorial/modules.html#the-module-search-path.
>
> Particularly-
> "
> When a module named spam is imported, the interpreter searches for a
> file named spam.py 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
> y=[1,2,3]
> $ 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
> ...
> y=[1,2,3]
>
> 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
> 'b.m'
> >>> y
> [1, 2, 3]
> >>> z
>
> [3, 2, 1]
>
> $ cat foo.m
> y=[1,2,3]
> $ cat bar.m
> z=[3,2,1]
>
> 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 ashttp://docs.python.org:-)
> --
> Regards,
> Ishwor Gurung

execfile(x) does what I'm looking for.

Thanks



More information about the Python-list mailing list