How to run a python script from IDLE interactive shell?

前端 未结 15 1810
無奈伤痛
無奈伤痛 2020-11-30 17:25

How do I run a python script from within the IDLE interactive shell?

The following throws an error:

>>> python helloworld.py
SyntaxError: i         


        
相关标签:
15条回答
  • 2020-11-30 18:03

    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.

    0 讨论(0)
  • 2020-11-30 18:08

    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.


    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])
    
    0 讨论(0)
  • 2020-11-30 18:09

    Try this

    import os
    import subprocess
    
    DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
    
    subprocess.call(['python', DIR])
    
    0 讨论(0)
  • 2020-11-30 18:10

    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")

    0 讨论(0)
  • 2020-11-30 18:11

    You can use this in python3:

    exec(open(filename).read())
    
    0 讨论(0)
  • 2020-11-30 18:11

    In Python 3, there is no execFile. One can use exec built-in function, for instance:

    import helloworld
    exec('helloworld')
    
    0 讨论(0)
提交回复
热议问题