涨见识了,在终端执行 Python 代码的 6 种方式!
后台-插件-广告管理-内容页头部广告(手机) |
我意识到其他人可能不知道有五花八门的方法可以将 Python 指向要执行的代码,因此有了这篇文章。
1、通过标准输入和管道
因为如何用管道传东西给一个进程是属于 shell 的内容,我不打算深入解释。毋庸置疑,你可以将代码传递到 Python 中。
# 管道传内容给 python echo "print('hi')" | python- 1
- 2
如果将文件重定向到 Python,这显然也可以。
# 重定向一个文件给 python python < spam.py- 1
- 2
归功于 Python 的 UNIX 传统,这些都不太令人感到意外。
2、通过-c 指定的字符串
如果你只需要快速地检查某些内容,则可以在命令行中将代码作为字符串传递。
# 使用 python 的 -c 参数 python -c "print('hi')"- 1
- 2
当需要检查仅一行或两行代码时,我个人会使用它,而不是启动 REPL(译注:Read Eval Print Loop,即交互式解释器,例如在 windows 控制台中输入python, 就会进入交互式解释器。-c 参数用法可以省去进入解释器界面的过程) 。
3、文件的路径
最众所周知的传代码给 python 的方法很可能是通过文件路径。
# 指定 python 的文件路径 python spam.py- 1
- 2
要实现这一点的关键是将包含该文件的目录放到sys.path 里。这样你的所有导入都可以继续使用。但这也是为什么你不能/不应该传入包含在一个包里的模块路径。因为sys.path 可能不包含该包的目录,因此所有的导入将相对于与你预期的包不同的目录。
4、对包使用 -m
执行 Python 包的正确方法是使用 -m 并指定要运行的包名。
python -m spam- 1
它在底层使用了runpy [5]。要在你的项目中做到这点,只需要在包里指定一个__main__.py 文件,它将被当成__main__ 执行。而且子模块可以像任何其它模块一样导入,因此你可以对其进行各种测试。
我知道有些人喜欢在一个包里写一个main 子模块,然后将其__main__.py 写成:
from . import main if __name__ == "__main__": main.main()- 1
- 2
- 3
- 4
就我个人而言,我不感冒于单独的main 模块,而是直接将所有相关的代码放入__main__.py ,因为我感觉这些模块名是多余的。
5、目录
定义__main__.py也可以扩展到目录。如果你看一下促成此博客文章的示例,python news 可执行,就是因为 news 目录有一个 __main__.py 文件。该目录就像一个文件路径被 Python 执行了。
现在你可能会问:“为什么不直接指定文件路径呢?”好吧,坦白说,关于文件路径,有件事得说清楚。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |