涨见识了,在终端执行 Python 代码的 6 种方式
作者 | BRETT CANNON
python news
,它会将 Python 指向我们代码中的"news"目录。-m
?请参阅我的有关带 -m 使用 pip 的文章[4],了解原因。1. 通过标准输入和管理
# 管道传内容给 python
echo "print('hi')" | python
# 重定向一个文件给 python
python < spam.py
2. 通过 -c 指定的字符串
# 使用 python 的 -c 参数
python -c "print('hi')"
python
, 就会进入交互式解释器。-c 参数用法可以省去进入解释器界面的过程)3. 文件的路径
# 指定 python 的文件路径
python spam.py
sys.path
里。这样你的所有导入都可以继续使用。但这也是为什么你不能/不应该传入包含在一个包里的模块路径。因为sys.path
可能不包含该包的目录,因此所有的导入将相对于与你预期的包不同的目录。4. 对包使用 -m
python -m spam
__main__.py
文件,它将被当成__main__
执行。而且子模块可以像任何其它模块一样导入,因此你可以对其进行各种测试。main
子模块,然后将其__main__.py
写成:from . import main
if __name__ == "__main__":
main.main()
main
模块,而是直接将所有相关的代码放入__main__.py
,因为我感觉这些模块名是多余的。5. 目录
__main__.py
也可以扩展到目录。如果你看一下促成此博客文章的示例,python news
可执行,就是因为 news 目录有一个 __main__.py
文件。该目录就像一个文件路径被 Python 执行了。python news/announce.py
,但是并没有确切的理由说明这种机制何时存在。__main__.py
文件非常简单。import runpy
# Change 'announce' to whatever module you want to run.
runpy.run_module('announce', run_name='__main__', alter_sys=True)
__main__.py
旁边(译注:即同级目录),那么就足够了!__main__.py
里不用导入 announce 模块,还是以它为主模块执行,也就不会破坏原来的依赖导入关系)6. 执行一个压缩文件
__main__.py
,放置在一个压缩文件中,并把压缩文件所在目录放在 sys.path 里,Python 会替你运行__main__.py
文件。# 将一个压缩包传给 Python
python app.pyz
__main__.py
并添加一条组织行(shebang line),因此你甚至不需要指定 python,如果你不想在 UNIX 上指定它的话。如果你想移动一堆纯 Python 代码,这是一种不错的方法。__main__.py
来处理压缩文件的提取、缓存,然后为你执行代码。尽管不如纯 Python 解决方案理想,但它确实可行,并且在这种情况下算得上是优雅的。回复关键字“简明python ”,立即获取入门必备书籍《简明python教程》电子版
回复关键字“爬虫”,立即获取爬虫学习资料
python入门与进阶 每天与你一起成长 推荐阅读
点赞和在看就是最大的支持❤️
评论