How to run a python script from IDLE interactive shell?
如何在空闲交互shell中运行python脚本?
以下引发错误:
1 2 | >>> python helloworld.py SyntaxError: invalid syntax |
Python 2内置函数:execfile
1 | execfile('helloworld.py') |
通常不能用参数调用它。但这里有一个解决方法:
1 2 3 | import sys sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name execfile('helloworld.py') |
python3:替代exefile:
1 | exec(open('helloworld.py').read()) |
有关传递全局/局部变量的信息,请参阅https://stackoverflow.com/a/437857/739577。
自2.6起已弃用:popen
1 2 3 | import os os.popen('python helloworld.py') # Just run the program os.popen('python helloworld.py').read() # Also gets you the stdout |
有争论:
1 | os.popen('python helloworld.py arg').read() |
高级用法:子进程
1 2 3 | import subprocess subprocess.call(['python', 'helloworld.py']) # Just run the program subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout |
有争论:
1 | subprocess.call(['python', 'helloworld.py', 'arg']) |
阅读文档了解详细信息:—)
用此基本
1 2 3 | import sys if len(sys.argv) > 1: print(sys.argv[1]) |
您可以在python3中使用:
1 | exec(open(filename).read()) |
空闲shell窗口与终端shell不同(例如运行
试试这个
1 2 3 4 5 6 | import os import subprocess DIR = os.path.join('C:\', 'Users', 'Sergey', 'Desktop', 'helloword.py') subprocess.call(['python', DIR]) |
埃多克斯1〔8〕为我做这项工作。需要注意的是,如果.py文件不在python文件夹中,则输入该文件的完整目录名(至少在Windows中是这样)。
例如,
最简单的方法
1 2 3 | python -i helloworld.py #Python 2 python3 -i helloworld.py #Python 3 |
例如:
1 2 3 4 5 | import subprocess subprocess.call("C:\helloworld.py") subprocess.call(["python","-h"]) |
你可以用两种方法
import file_name exec(open('file_name').read())
但请确保该文件应该存储在程序运行的位置
要在python shell(如idle)或django shell中运行python脚本,可以使用exec()函数执行以下操作。exec()执行代码对象参数。python中的代码对象只是简单地编译了python代码。因此,必须首先编译脚本文件,然后使用exec()执行它。从你的外壳:
1
2
3 >>>file_to_compile = open('/path/to/your/file.py').read()
>>>code_object = compile(file_to_compile, '<string>', 'exec')
>>>exec(code_object)
我使用的是python 3.4。有关详细信息,请参阅编译和执行文档。
闲置时,以下工作:
1 | import helloworld |
我不太清楚它为什么会起作用,但它确实起作用。
在python 3中,没有
1 2 | import helloworld exec('helloworld') |
在Windows环境中,可以使用以下语法在python3 shell命令行上执行py文件:
exec(open('absolute path to file_name').read())
下面解释如何从python shell命令行执行简单的helloworld.py文件。
File Location: C:/Users/testuser/testfolder/helloworld.py
File Content: print("hello world")
我们可以在python3.7 shell上执行此文件,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | >>> 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 |
我测试过这个,结果是:
1 | exec(open('filename').read()) # Don't forget to put the filename between ' ' |