广告
返回顶部
首页 > 资讯 > 后端开发 > Python >有哪些在终端执行Python代码的方式
  • 193
分享到

有哪些在终端执行Python代码的方式

2023-06-16 11:06:55 193人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“有哪些在终端执行python代码的方式”,在日常操作中,相信很多人在有哪些在终端执行Python代码的方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些在终端执行Python代码的方式

这篇文章主要介绍“有哪些在终端执行python代码的方式”,在日常操作中,相信很多人在有哪些在终端执行Python代码的方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些在终端执行Python代码的方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、通过标准输入和管道

因为如何用管道传东西给一个进程是属于 shell 的内容,我不打算深入解释。毋庸置疑,你可以将代码传递到 Python 中。

# 管道传内容给 python echo "print('hi')" | python

如果将文件重定向到 Python,这显然也可以。

# 重定向一个文件给 python python < spam.py

归功于 Python 的 UNIX 传统,这些都不太令人感到意外。

2、通过 -c 指定的字符串

如果你只需要快速地检查某些内容,则可以在命令行中将代码作为字符串传递。

# 使用 python 的 -c 参数 python -c "print('hi')"

当需要检查仅一行或两行代码时,我个人会使用它,而不是启动 REPL(译注:Read Eval Print Loop,即交互式解释器,例如在 windows  控制台中输入python, 就会进入交互式解释器。-c 参数用法可以省去进入解释器界面的过程)

3、文件的路径

最众所周知的传代码给 python 的方法很可能是通过文件路径。

# 指定 python 的文件路径 python spam.py

要实现这一点的关键是将包含该文件的目录放到sys.path里。这样你的所有导入都可以继续使用。但这也是为什么你不能/不应该传入包含在一个包里的模块路径。因为sys.path可能不包含该包的目录,因此所有的导入将相对于与你预期的包不同的目录。

4、对包使用 -m

执行 Python 包的正确方法是使用 -m 并指定要运行的包名。

python -m spam

它在底层使用了runpy[5]。要在你的项目中做到这点,只需要在包里指定一个__main__.py文件,它将被当成__main__执行。而且子模块可以像任何其它模块一样导入,因此你可以对其进行各种测试

我知道有些人喜欢在一个包里写一个main子模块,然后将其__main__.py写成:

from . import main  if __name__ == "__main__":     main.main()

就我个人而言,我不感冒于单独的main模块,而是直接将所有相关的代码放入__main__.py,因为我感觉这些模块名是多余的。

(译注:即作者不关心作为入口文件的"main"或者“__main__”模块,因为执行时只需用它们的包名即可。我认为这也暗示了入口模块不该再被其它模块  import。我上篇文章 [6]比作者的观点激进,认为连那句 if 语句都不该写。)

5、目录

定义__main__.py也可以扩展到目录。如果你看一下促成此博客文章的示例,python news可执行,就是因为 news 目录有一个  __main__.py 文件。该目录就像一个文件路径被 Python 执行了。

有哪些在终端执行Python代码的方式

现在你可能会问:“为什么不直接指定文件路径呢?”好吧,坦白说,关于文件路径,有件事得说清楚。?在发布过程中,我可以简单地写上说明,让运行python  news/announce.py,但是并没有确切的理由说明这种机制何时存在。

再加上我以后可以更改文件名,而且没人会注意到。再加上我知道代码会带有辅助文件,因此将其放在目录中而不是单独作为单个文件是有意义的。

当然,我也可以将它变为一个使用 -m 的包,但是没必要,因为 announce 脚本很简单,我知道它要保持成为一个单独的自足的文件(少于 200  行,并且测试模块也大约是相同的长度)

况且,__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旁边(译注:即同级目录),那么就足够了!

(译注:我觉得作者在此有点“炫技”了,因为这种写法的前提是得知道 runpy 的用法,但是就像前一条所写的用 -m 参数运行一个包,在底层也是用了  runpy。不过炫技的好处也非常明显,即__main__.py 里不用导入 announce  模块,还是以它为主模块执行,也就不会破坏原来的依赖导入关系)

6、执行一个压缩文件

如果你确实有多个文件和/或依赖模块,并且希望将所有代码作为一个单元发布,你可以用一个__main__.py,放置在一个压缩文件中,并把压缩文件所在目录放在  sys.path 里,Python 会替你运行__main__.py文件。

# 将一个压缩包传给 Python python app.pyz

人们现在习惯上用 .pyz 文件扩展名来命名此类压缩文件,但这纯粹是传统,不会影响任何东西;你当然也可以用 .zip 文件扩展名。

为了简化创建此类可执行的压缩文件,标准库提供了zipapp[7]模块。它会为你生成__main__.py并添加一条组织行(shebang  line),因此你甚至不需要指定 python,如果你不想在 UNIX 上指定它的话。如果你想移动一堆纯 Python 代码,这是一种不错的方法。

不幸的是,仅当压缩文件包含的所有代码都是纯 Python 时,才能这样运行压缩文件。执行压缩文件对扩展模块无效(这就是为什么 setuptools 有一个  zip_safe[8]标志的原因)。(译注:扩展模块 extension module,即 C/C++ 之类的非 Python 文件)

要加载扩展模块,Python 必须调用 dlopen()[9]函数,它要传入一个文件路径,但当该文件路径就包含在压缩文件内时,这显然不起作用。

我知道至少有一个人与 glibc 团队交谈过,关于支持将内存缓冲区传入压缩文件,以便 Python  可以将扩展模块读入内存,并将其传给压缩文件,但是如果内存为此服务,glibc 团队并不同意。

但是,并非所有希望都丧失了!你可以使用诸如shiv[10]之类的项目,它会捆绑(bundle)你的代码,然后提供一个__main__.py来处理压缩文件的提取、缓存,然后为你执行代码。尽管不如纯  Python 解决方案理想,但它确实可行,并且在这种情况下算得上是优雅的。

到此,关于“有哪些在终端执行Python代码的方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 有哪些在终端执行Python代码的方式

本文链接: https://www.lsjlt.com/news/283398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 有哪些在终端执行Python代码的方式
    这篇文章主要介绍“有哪些在终端执行Python代码的方式”,在日常操作中,相信很多人在有哪些在终端执行Python代码的方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些在终端执行Python代码的方式...
    99+
    2023-06-16
  • Spring Boot应用在启动阶段执行代码的方式有哪些
    这篇文章主要介绍Spring Boot应用在启动阶段执行代码的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Spring Boot 提供了至少 5 种方式用于在应用启动时执行代码。我们应该如何选择?本文将会...
    99+
    2023-06-16
  • 终止python代码运行的三种方式
    一 sys.exit() 执行这条语句会直接退出程序,也是常用的方法,不需要考虑平台等因素的影响。它通常是退出 Python 程序的首选方法。 该方法包含一个参数status,默认为0,表示正常退出,或1,表示异常退出。 import sy...
    99+
    2023-08-22
    unix linux 服务器 python
  • 【Python】在代码中执行终端命令并获取输出和运行状态
    文章目录 0 前言1 os库1.1 os.system1.2 os.popen 2 subprocess库2.1 subprocess.run2.2 subprocess.Popen ...
    99+
    2023-09-11
    python 终端 os subprocess 命令行
  • shell脚本的执行方式有哪些
    今天就跟大家聊聊有关shell脚本的执行方式有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先,看下我们的脚本内容[tan@tan scripts]$ ll...
    99+
    2023-06-09
  • SQL语句的执行方式有哪些
    SQL语句的执行方式有以下几种:1. 交互式执行:即通过命令行或者可视化工具直接输入SQL语句并执行,结果即时显示。2. 批处理执行...
    99+
    2023-09-23
    SQL
  • Linux执行脚本的方式有哪些
    Linux执行脚本的方式有以下几种:1. 使用命令行执行脚本:在终端中输入脚本的路径和名称,例如 `./script.sh`。2. ...
    99+
    2023-09-27
    Linux
  • Java计算程序代码执行时间的方法有哪些
    小编给大家分享一下Java计算程序代码执行时间的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!有时候为了排查性能问题,需要记录完成某个操作需要的时间,我...
    99+
    2023-05-30
    java
  • MySQL数据库终端的常用操作指令代码有哪些
    今天就跟大家聊聊有关MySQL数据库终端的常用操作指令代码有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、添加用户//新建用户create user 用户...
    99+
    2023-06-22
  • c#动态执行脚本的方式有哪些
    这篇文章主要介绍“c#动态执行脚本的方式有哪些”,在日常操作中,相信很多人在c#动态执行脚本的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c#动态执行脚本的方式有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • 调试Node.js代码的方式有哪些
    这篇文章主要讲解了“调试Node.js代码的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“调试Node.js代码的方式有哪些”吧!很多时候,我苦恼于 Node.js 的调试,只会使...
    99+
    2023-06-21
  • c++代码重用的方式有哪些
    C++代码重用的方式有以下几种:1. 函数调用:将常用的功能代码封装成函数,通过函数调用来重用代码。2. 类的继承:使用继承机制创建...
    99+
    2023-10-18
    c++
  • javascript代码的使用方式有哪些
    这篇文章给大家分享的是有关javascript代码的使用方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。javascript代码有两种使用方式,分别是:1、直接执行,打开一个网页时,所有定义在script...
    99+
    2023-06-15
  • Python执行外部命令的方法有哪些
    这篇文章主要介绍“Python执行外部命令的方法有哪些”,在日常操作中,相信很多人在Python执行外部命令的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python执行外部命令的方法有哪些”的疑...
    99+
    2023-06-16
  • Python执行js字符串的方法有哪些
    这篇文章主要讲解了“Python执行js字符串的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python执行js字符串的方法有哪些”吧!方法执行大型js时有点慢特殊编码的输入或输...
    99+
    2023-06-30
  • 有哪些实用的单行Python代码
    这篇文章主要介绍了有哪些实用的单行Python代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇有哪些实用的单行Python代码文章都会有所收获,下面我们一起来看看吧。1. If — Else 语句if-els...
    99+
    2023-07-06
  • Python代码的优化方法有哪些
    这篇文章主要介绍“Python代码的优化方法有哪些”,在日常操作中,相信很多人在Python代码的优化方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python代码的优化方法有哪些”的疑惑有所帮助!...
    99+
    2023-06-16
  • java后端进行跨域的方式有哪些
    这篇文章主要讲解了“java后端进行跨域的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java后端进行跨域的方式有哪些”吧!一、使用@CrossOrigin注解在controll...
    99+
    2023-07-05
  • Python collections优化代码的方法有哪些
    这篇文章主要介绍“Python collections优化代码的方法有哪些”,在日常操作中,相信很多人在Python collections优化代码的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”P...
    99+
    2023-06-16
  • python中清空代码的方法有哪些
    在Python中,清空代码的方法有以下几种:1. 删除变量:通过使用`del`关键字删除变量,可以释放变量占用的内存空间。例如:`d...
    99+
    2023-08-09
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作