How do I run a python script from within the IDLE interactive shell?
The following throws an error:
>>> python helloworld.py SyntaxError: invalid syntax Python3:
exec(open('helloworld.py').read()) If your file not in the same dir:
exec(open('./app/filename.py').read()) See https://stackoverflow.com/a/437857/739577 for passing global/local variables.
Note: If you are running in windows you should use double slash "//" otherwise it gives error
In deprecated Python versions
Python2 Built-in function: execfile
execfile('helloworld.py') It normally cannot be called with arguments. But here's a workaround:
import sys sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name execfile('helloworld.py') Deprecated since 2.6: popen
import os os.popen('python helloworld.py') # Just run the program os.popen('python helloworld.py').read() # Also gets you the stdout With arguments:
os.popen('python helloworld.py arg').read() Advance usage: subprocess
import subprocess subprocess.call(['python', 'helloworld.py']) # Just run the program subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout With arguments:
subprocess.call(['python', 'helloworld.py', 'arg']) Read the docs for details :-)
Tested with this basic helloworld.py:
import sys if len(sys.argv) > 1: print(sys.argv[1]) exec for Python3The IDLE shell window is not the same as a terminal shell (e.g. running sh or bash). Rather, it is just like being in the Python interactive interpreter (python -i). The easiest way to run a script in IDLE is to use the Open command from the File menu (this may vary a bit depending on which platform you are running) to load your script file into an IDLE editor window and then use the Run -> Run Module command (shortcut F5).
sys.argv at the very beginning of the program, for example, under the usual if __name__ == "__main__" boilerplate.Run -> Run with Customized... command (shortcut Shift+F5) and a popup will open where you can supply your arguments. Unfortunately it doesn't remember them currently so you'll be pasting them with every run.In a python console, one can try the following 2 ways.
under the same work directory,
1. >> import helloworld
# if you have a variable x, you can print it in the IDLE.
>> helloworld.x
# if you have a function func, you can also call it like this.
>> helloworld.func()
2. >> runfile("./helloworld.py")
For example:
import subprocess subprocess.call("C:\helloworld.py") subprocess.call(["python", "-h"]) subprocess.call(r'c:\path\to\something.py') does not work for me. OSError: [WinError 193] %1 is not a valid Win32 applicationIn Python 3, there is no execFile. One can use exec built-in function, for instance:
import helloworld exec('helloworld') In IDLE, the following works :-
import helloworld I don't know much about why it works, but it does..
To run a python script in a python shell such as Idle or in a Django shell you can do the following using the exec() function. Exec() executes a code object argument. A code object in Python is simply compiled Python code. So you must first compile your script file and then execute it using exec(). From your shell:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
I'm using Python 3.4. See the compile and exec docs for detailed info.
I tested this and it kinda works out :
exec(open('filename').read()) # Don't forget to put the filename between ' ' On Windows environment, you can execute py file on Python3 shell command line with the following syntax:
exec(open('absolute path to file_name').read())
Below explains how to execute a simple helloworld.py file from python shell command line
File Location: C:/Users/testuser/testfolder/helloworld.py
File Content: print("hello world")
We can execute this file on Python3.7 Shell as below:
>>> import os >>> abs_path = 'C://Users/testuser/testfolder' >>> os.chdir(abs_path) >>> os.getcwd() 'C:\\Users\\testuser\\testfolder' >>> exec(open("helloworld.py").read()) hello world >>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read()) hello world >>> os.path.abspath("helloworld.py") 'C:\\Users\\testuser\\testfolder\\helloworld.py' >>> import helloworld hello world
helloworld.pylook like?python helloworld.pyin an IDLE shell window and that doesn't work.