首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何结合shell命令使用python模块

如何结合shell命令使用python模块
EN

Stack Overflow用户
提问于 2019-09-08 03:05:12
回答 1查看 62关注 0票数 1

我想使用shell中的python模块(确切地说,是来自gnuplot的间接模块)。我不想为每个调用编写额外的脚本或实现一些I/O逻辑。

假设作为一个最小的工作示例,我有一个python模块module_foo.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
def bar():
    print(1,2,3)

我的问题是:

为什么不能像这里这样将模块加载和命令执行结合起来使用python模块?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python -m module_foo -c 'bar()'

执行的时候什么都不会发生。但真正起作用的是,只使用这样的命令调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python -c 'import module_foo; module_foo.bar()'
1 2 3

或者这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python -c 'from module_foo import *; bar()'
1 2 3

在加载模块之前,即使是语法错误的命令也被“接受”--而不是执行--我想(对bar的调用没有关闭):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ python -m module_foo -c 'bar('
$ 

但是,可以使用python单元测试使用-m模块选项(来自python文档):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python -m unittest test_module1 test_module2

python手册对这两个选项都是这样写的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-c command
Specify the command to execute (see next section).  This terminates the option
list (following options are passed as arguments to the command).
-m module-name
Searches sys.path for the named module and runs the corresponding .py file as
a script.

因此,我希望能够在这个-m ... -c ...中使用路径选项,但不能按反向顺序使用-c ... -m ...‘。我漏掉了什么明显的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-08 03:13:59

如果您希望您的Python模块是可执行的,并调用函数bar(),则应该将其添加到python文件的末尾:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == "__main__":  # this checks that the file is "executed", rather than "imported"

    bar()  # call the function you want to call

然后打电话:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python module_foo.py

如果您想要更多的控制,可以将参数传递给脚本并从sys.argv访问它们。

有关传递给脚本的参数的更多灵活性,请参见argparse解析模块

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57841346

复制
相关文章
常用shell命令_使用shell命令
  ls 命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,它的主要参数有:   -a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。   -l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。   -t 将文件按照创建时间排序列出。   -A 和-a 一样,但是不列出“.” (当前目录)和“…” (父目录)。   -R 递归列出所有文件,包括子目录中的文件。
全栈程序员站长
2022/11/17
5510
12-02【使用Auditbeat模块监控shell命令】
Auditbeat Audited模块可以用来监控所有用户在系统上执行的 shell 命令。在终端用户偶尔才会登录的服务器上,通常需要进行监控。
HaydenGuo
2020/01/03
2.3K0
12-02【使用Auditbeat模块监控shell命令】
python SSH模块登录,远程机执行shell命令实例解析
建立一个SSHClient对象以后,除了执行命令,还可以开启一个sftp的session,用于传输文件、创建文件夹等等。
菲宇
2019/06/12
2.7K0
Python 命令行模块使用技巧
python main.py -H 192.168.1.1 -p 22,23,24
微软技术分享
2022/12/28
3760
Python 命令行模块使用技巧
Python调用Shell命令
前言:在python程序里面难免会用到shell命令,在python调用shell脚本也不是很难,记录了一下! ****通过os模块**** system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果 #os-One #只返回结果 os.system(command) sample import os print os.system("service apache2 status") ---- popen方不仅仅返回结果,还返回一个类文件对象,通过调用该对象的read()或readlines
AlicFeng
2018/06/08
1.3K0
如何在Bash Shell脚本中使用`exec`命令?
exec 是一个在Bash Shell脚本中使用的命令,它允许您替换当前进程的内容,包括进程ID和文件描述符。使用exec命令可以实现一些有用的功能,例如替换脚本当前的Shell进程、切换到不同的命令解释器、重定向标准输入输出等。本文将详细介绍如何在Bash Shell脚本中使用exec命令,并提供一些常见的用例和示例。
网络技术联盟站
2023/06/08
3.8K0
使用 python 执行 shell 命令的几种常用方式
在使用 Python 编写自动化脚本的时候,难免会需要执行一些基本的 shell 命令,而 Python 执行 shell 命令的方式有好几种,如果根据需要选择最适合的方式显得非常重要,这篇文章就来总结和对比一下几种常见的 Python 运行 shell 命令的方式。
Hopetree
2022/09/26
3.2K0
如何使用 Python 多处理模块
在本文[1]中,我们将学习如何使用多处理模块中的特定 Python 类(进程类)。我将通过示例为您提供快速概述。
数据科学工厂
2023/09/06
2000
如何使用 Python 多处理模块
如何使用使用 C++ 获得 shell 命令后的输出
如果是在 Windows 上,用 _popen 和 _pclose 代替 popen 和 pclose 即可。
ClearSeve
2022/02/10
2.4K0
ansible(6)——模块命令command、shell详细用法
前面在使用-m command命令时,只用了一些基本的操作,其实可以通过ansible-doc的命令查看command里和shell更加详细的功能:
gzq大数据
2020/11/11
1.3K0
ansible(6)——模块命令command、shell详细用法
python之执行shell命令
[root@s141 ~]# python Python 2.7.5 (default, Sep 15 2016, 22:37:39)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os          #加载模块 >>> r=os.system >>> r("ls /root")     
py3study
2020/01/14
1.2K0
python 之 shell命令执行
可以看到这里多出了1个0., 这里的0 并不是文件,上面2个才是文件, 0 表示执行状态,0 为执行成功,  非0 表示执行失败
py3study
2020/01/14
1.2K0
使用 HBase - HBase Shell 命令
HBase 数据库默认的客户端程序是 HBase Shell,它是一个封装了 Java 客户端 API 的 JRuby 应用软件。用户可以在 HBase 的 HMaster 主机上通过命令行输入 hbase shell,即可进入 HBase 命令行环境,以命令行的方式与 HBase 进行交互。使用 quit 或 exit 命令可退出 HBase 命令行环境。
数人之道
2022/01/18
11.1K0
使用 HBase - HBase Shell 命令
zookeeper的shell命令使用
介绍zookeeper的shell命令 1.进入客户端命令行 --(1) 连接本地服务 [hadoop@hadoop01 ~]$ zkCli.sh [zk: localhost:2181(CONNECTED) 0] --(2) 连接其他节点服务 [hadoop@hadoop01 ~]$ zkCli.sh -server hadoop02:2181 [zk: hadoop02:2181(CONNECTED) 0] --(3) 连接其他节点服务 [hadoop@hadoop01 ~]$ zkCli.sh -
CoderJed
2018/09/13
1.1K0
python调用shell命令小结
 在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen。默认情况下subprocess.call的方法结果是返回值,即1或0,而os.popen则是命令运行的结果,可以用readlines(读取所有行,返回数组)或者read(读读取所有行,返回str)来读取。
py3study
2020/01/06
1.3K0
笔记 | 如何在Python下调用Linux的Shell命令?
昨天应导师要求,需要写很多python脚本在linux下,这样就会用到如何在python下调用linux命令。
zenRRan
2018/12/17
4.7K0
如何使用presshell在WordPress主机上执行Shell命令
presshell是一款针对WordPress的Shell工具,该工具可以帮助广大研究人员上传Shell文件,并在WordPress服务器/主机上轻松执行Shell命令。注意,上传Shell的路径为“<your-host>/wp-content/plugins/shell/shell.php”。
FB客服
2022/06/08
5990
【说站】python列表如何结合数组使用
1、要存储多种相同类型的元素,需要使用list,这段时间还需要对列表执行各种操作。
很酷的站长
2022/11/23
9530
【说站】python列表如何结合数组使用
点击加载更多

相似问题

使用Python命令模块的多行shell命令

22

如何使用python子进程模块执行多个shell命令?

12

与shell结合使用的超时模块

124

无法使用python子进程模块*运行shell命令

12

使用python的子进程模块运行shell命令

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文