Rus Python script interactively
Marcus Wanner
marcusw at cox.net
Sat Jul 18 13:04:07 EDT 2009
On 7/18/2009 12:32 PM, Gnarlodious wrote:
> In an interactive session (I am using iPython), what is the most
> elegant way to run a Python script from Terminal? Right now I am
> saying:
>
> import subprocess
> subprocess.call("python /path/to/scriptname.py", shell=True)
>
> But I am calling a shell process and I'd rather not. The script just
> runs, no inputs are needed. Is there a more Pythonesque method?
>
> -- Gnarlie
> http://Gnarlodious.com/
You could put the code of the script in a main() function and have an if
__name__ == '__main__': around the internal call. That way, it will
still run the code if you run it normally, and you can also run it
several times from the interactive session, ie:
file you want to run:
{{{
def somefunction():
print 'hello world'
somefunction()
}}}
file after modifications:
{{{
def somefunction():
print 'hello world'
def main():
somefunction()
if __name__ == '__main__': #only true if the file is being run normally,
not imported.
main()
}}}
Both of those, if run normally, will print "hello world". If the first
one is imported, it will run once and not me runnable in that session
again. If the second one is imported, it will not do anything until you
call the main() function, and then you can call it again as many times
as you want:
{{{
>>> import thefile
>>> for i in range(5):
... thefile.main()
...
hello world
hello world
hello world
hello world
hello world
>>> exit()
}}}
Hope this helps you!
Marcus
More information about the Python-list
mailing list