python 执行非python程序

【python pyinstaller库】linux系统上python脚本如何打包为可执行程序(非windows运行的.exe) python脚本 打包为 linux平台的可执行文件(不是windows系统平台的.exe执行文件) 阅读详情

1. os模块

一些常见的函数:

# 获得系统信息
os.uname()
('Linux', 'sjpt-hdwxnew-33.wxxdc', '4.4.0-142-generic', '#168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019', 'x86_64')
# 获得现在进程的真正用户
os.getuid()
1000
# 获得现在的PID
os.getpid()


1.1 system(cmd)

接受字符串形式的系统命令并执行它,执行命令时,python是挂起的,执行完毕后,会以system()的返回值形式给出退出状态(0:成功,非0:错误),python也将继续执行。

import os
os.system("cat ./tt.py")
result = os.system("uname -a")

1.2 exec*()

execl(file,arg0,arg1,...) : 用参数列表arg0,arg1等执行文件

execv(file,arglist) : 用参数向量列表执行文件

1.3. fork()

称为进程的单一执行流程控制,通常与ecec*()一起使用

调用fork()的原始进程称为父进程,该调用结果新创建的进程称为子进程。

两者区别:子进程永远返回0,父进程永远返回子进程的PID,且两个进程都会在调用fork() 后立即执行。

创建子进程的目的是为了让其运行其他程序,所以必须在父进程和子进程返回时采取分流。

fork() 会返回两次

import os
res = os.fork()
print(res)
if res == 0:
    print("sub process")
else:
    print("main process")
# 运行结果:
29335
main process
0
sub process

子进程自身有虚拟内存空间的拷贝,也有一份父进程地址空间的原样拷贝

1.4 wait*()

当子进程执行完毕,需要其父进程进行扫尾工作,亦称“收获孩子”,父进程可以继续运行,稍后扫尾也可以等待子进程完成并在那进行扫尾。

当子进程完成执行,还没有被收获的时候,就进入了闲置状态,变成僵尸进程,其仍然保留着存活时期分配给他们的系统资源,直到被父进程收获。

调用wait()会挂起执行,直到子进程执行完毕或通过信号终止。

waitpid() 还可以等待指定PID的子进程完成。

通常和fork(),exec*()一起使用

1.5 spawn*()

函数spawn*()家族和fork, exec*()相似,他们都在新进程中执行命令,类似于在线程中启动函数。

1.6 popen()

popen(cmd,mode='r',buffering=-1)

执行字符串命令,返回一个文件对象。

# 查看当前目录下的文件
import os
with os.popen('ls ./') as f:
    for line in f:
        print(line,)

2. subprocess32 模块

可以取代os模块的所有函数

2.1 call()

用于取代 os.system()

subprocess.call(args, *, stdin= None, stdout = None, stderr = None, shell = False) 
运行由args参数提供的命令,等待命令执行结束并返回返回码。args参数由字符串形式提供且有多个命令参数时,需要提供shell=True参数。

from subprocess32 import call

# 查看当前目录
res = call(('ls', '-l', '.'))
call('python run.py', shell=True, stdin=open('fake_input', 'r'), stdout=open('result', 'w'))

2.2 check_call()

与call方法类似,不同在于如果命令行执行成功,check_call返回返回码0,否则抛出subprocess.CalledProcessError异常。

import subprocess32
try:
    res = subprocess.check_call(['ls', '('])
    print('res:', res)
except subprocess32.CalledProcessError as exc:
    print('子进程的退出码:', exc.returncode)
    print('子进程的执行命令:', exc.cmd)
    print('output:', exc.output)

注意:不要为stdout和stderr参数赋值为subprocess32.PIPE。

2.3 check_output()

在子进程执行命令,以字符串形式返回执行结果的输出。如果子进程退出码不是0,抛出subprocess.CalledProcessError异常。

import subprocess32
try:
    res = subprocess32.check_output('ls xxx',
                    stderr = subprocess.STDOUT,
                    shell = True)
    print('res:', res)
except subprocess.CalledProcessError as exc:
    print('returncode:', exc.returncode)
    print('cmd:', exc.cmd)
    print('output:', exc.output)

2.4 subprocess32.Popen类

from subprocess32 import Popen, PIPE, STDOUT
with Popen(('uname', '-a'), stdout=PIPE, stderr=STDOUT
    ,shell=True, close_fds=True).stdout as f:
#with Popen(('ls', '-l', '.'), stdout=PIPE).stdout as f:
    for line in f:
        print(line)

从数据库中读数据

2.4.1 hive sql 方式

def fetch_results(sql, table_title):
    command = """
         hive -S -e "
         set hive.cli.print.header=false;
         set mapreduce.job.queuename = root.hailangshiyebu-jishubu.default;
         %s "
    """ % (sql)
    result = []
    result.append(table_title)
    p = Popen(args=command, shell=True, stdout=PIPE)
    if p.poll() != 0:  # status = p.returncode
        print("执行失败" + str(status))
        sys.exit(1)
    for item in p.stdout.readlines():
        if  item.strip():
            line = item.split("\t")
            result.append(line[0])
    # out, err = p.communicate()
    return ''.join(result)

https://blog.youkuaiyun.com/MusicDancing/article/details/11675051621

2.4.2 spark sql 方式

import subprocess
from tempfile import NamedTemporaryFile

sql = 'select count(1) from table_name;'
# 临时文件
sql_file = NamedTemporaryFile('w+t',delete=False)
sql_file.write(sql)
sql_file.close()

cmd = """
    spark-sql --master yarn
        --queue root.bigdata
        --name 'xx'
        --executor-memory 8g
        --executor-cores 4
        --num-executors 50
        -f {file_name}
""".format(file_name=sql_file.name)
result = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)

【雕爷学编程】MicroPython手册之内置模块 os:与操作系统交互的函数 最后,我们使用 rmdir() 函数删除刚创建的目录,并打印出删除的目录名。1、它可以使用chdir(), getcwd(), ilistdir(), listdir(), mkdir(), remove(), rmdir(), rename(), stat(), statvfs()等方法来进行文件系统的访问和操作。4、它可以使用reset(), soft_reset(), bootloader(), reset_cause(), wake_reason()等方法来重置或唤醒设备,或获取重置或唤醒的原因。 阅读详情

相关推荐

OpenCV视频防抖算法实现与优化指南

本文详细解析了如何使用OpenCV实现视频防抖算法。通过特征点检测与光流跟踪估算帧间运动,利用滑动平均平滑运动轨迹,并应用仿射变换重塑视频帧。文章提供了完整的代码实现、参数调优指南及黑边处理等优化技巧,帮助开发者高效处理手持拍摄等场景下的视频抖动问题。

weixin_29062823的博客 341

python---os模块

os模块是python标准库中用于访问操作系统的功能的模块。 使用os模块中提供的接口可以实现跨平台访问。 os模块的作用: os模块提供了众多操作系统的功能接口函数。当os模块被导入后,回自动适应不同的操作系统,根据不通风不同的平台进行相应的操作。由于在python变成时经常对文件和目录进行编辑和调用,所以os模块的使用非常的重要。 1、os.name返回操作系统的类型nt为windows系统,posix为linux系统 # 查看系统的类型:windows or linux import os prin

WHDCCDJA的博客 1299

Halcon阈值算子 -- 局部阈值之dyn_threshold

Halcon阈值算子 – dyn_threshold HALCON有很多阈值算子,接下来将一一介绍。本文先介绍dyn_threshold。 以下介绍主要参考HALCON帮助文档,并加上自己的体会。如有纰漏,欢迎留言指出 理论介绍 dyn_threshold算子的函数签名如下: dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 输入参数有: OrigImage:待处理图像 ThresholdIm

m0_47015717的博客 5386

Python中的OS模块

一.环境变量函数 1.返回操作系统类型:os.name 值为posix,是Linux操作系统, 值为nt, 是windows操作系统 print(os.name) print('Linux' if os.name=='posix' else 'Windows') 2.操作系统的详细信息os.uname( ) **info = os.uname() print(info) print(...

villaaaaaaaa 351

Windows 11 - 打开操作安全中心提示 “需要使用新应用以打开此 Windowsdefender 链接“ 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开)

Windows 11 - 打开操作安全中心提示 "需要使用新应用以打开此 Windowsdefender 链接" 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开),当您点击任务栏上要关闭安全中心防护设置时,这种情况打不开怎么解决,怎么办,Windows安全中心,病毒和威胁保护,账户保护,防火墙和网络保护,设备安全性。

🏆 前端领域优质创作者 1万+

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

python代码不使用py文件运行的方法

注意: -F打包得到的是单个可执行文件,如果需要打包其他格式的文件,需要使用相应的代码,生成的exe文件在dist文件夹中。生成bat文件,双击bat运行(bat文件运行py文件需要本地有python环境)然后把txt的后缀名改成bat,双击test.bat即可运行py文件。包安装完成后,使用Anaconda Prompt打包py文件。包安装完成后,使用Anaconda Prompt打包py文件。1.1 使用pyinstaller生成exe。生成exe文件,双击exe运行。

Mika_____的博客 531

AI量化学习入门指南:从零开始掌握人工智能投资策略

量化投资:利用数学模型和计算机算法进行投资决策的方法算法交易:自动执行预定义交易规则的系统机器学习:让计算机从数据中学习并改进的技术回测:用历史数据检验交易策略表现的过程特征工程:将原始数据转化为模型可理解的输入过拟合:模型过度适应历史数据,导致未来表现不佳夏普比率:衡量单位风险所获得的超额收益AI量化投资不仅仅是技术的应用,更是一种理性、系统化的投资哲学。它不追求预测市场的每一个拐点,而是通过概率思维和风险管理,在不确定性的市场中寻找统计优势。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1132

python中os模块常用方法

import os print(os.name) posix 为linux nt   为windows 操作系统的详细信息 print(os.uname()) 其中os.uname().sysname系统名 os.uname().nodename   主机名 os.environ 所有的环境变量 通过key值获取环境变量对应的value值 print(os.environ.get('PATH')...

m493096871的博客 1149

【硬件工程师面经整理2_电源篇】

硬件工程师面经整理_电源篇

LeeYLong的博客 2767

科研——ICONIP论文修改和提交

ICONIP说明文档

Blackoutdragon的博客 6647

【Python】python执行环境

在python中有很多种运行外部程序的方法,有些特定的场景包括:在当前脚本继续运行、创建和管理子进程、执行外部命令或程序、执行需要输入的命令、通过网络来调用命令、执行命令来创建需要处理的输出、执行其它的python脚本、执行一系列动态生成的python脚本、导入python模块和执行它顶层的代码,这些场景都与python执行环境有关,下面先从可调用对象说起。1、可调用对象python有四种可调用对象

Making Life Better. Making Others Better. 3095

华为OD机试真题 新系统 9月27号 【数据中心最佳维护窗口】

华为OD机试真题 新系统【数据中心最佳维护窗口】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【数据中心最佳维护窗口】多语言题解。

qq_45776114的博客 1161

Python核心编程--执行环境

《Python核心编程》第二版 “执行环境”一章读书笔记。

Chenzejia的专栏 540

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python程序执行顺序

参考博客 Python程序执行顺序 Python的代码执行顺序 1.python程序是顺序执行的,不同于C中从main入口 例如以下代码,这里虽然有个main函数,但是最先输出的不是“main”而是“test1”: #test1 print ("test1") # 第1步 def Fun(): # 第7步 print ("Fun") # 第8步 def main(): # 第4步 pri.

屿十_ 2095

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python编程基础之十三Python执行环境

一、简介        在python中有多种运行外部程序的方法,比如运行操作系统命令,或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件,这完全取决于用户调用。有些特定的执行场景:当前脚本继续运行、创建和管理子进程、执行外部命令或程序、执行需要输入的命令、通过网络来调用命令、执行命令来创建需要处理的输出、执行其他的 Python 脚本、执行一系列动态生成Python语句

乌托邦 2987

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SECTION 28 执行环境

执行环境

u010230019的博客 633

CentOS切换到www用户执行

执行程序时,一般不建议用root用户,像Nginx建议用www用户。

小龙在线 1020

python语言的运行环境_python 执行环境

1 一些函数callablecallable()是一个布尔函数,确定一个对象是否可以通过函数操作符(())来调用。如果函数可调用便返回True,否则便是False。 比如:>>> callable(1)False>>>callable(type)Truecompilecompile(string,something,'eval'/'single'/'exec')...

weixin_39690105的博客 565

Python学习笔记14:Python执行环境

1、可调用对象 许多Python对象都是可调用的,即任何能通过函数操作符“()”来调用的对象。Python有4种可调用对象:函数、方法、类以及一些类实例,这些对象的任何引用或者别名都是可调用的。 (1)函数(3种函数) ①内建函数(BIF,built-in function) 由C/C++写的,编译过后放入Python解释器,然后把它们作为第一(内建)名称空间的一部分加载进系统。这些函数在_

三五月儿的专栏 3688

chatgpt赋能python:Python程序在非Python环境中运行

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

reilust的博客 687

python编译成手机可用程序_Python 程序打包成 exe 可执行文件

可执行文件:对于非码农用户或者一些小白用户,你让他装个 Python 同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉他即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows, Linux, Mac,…)。.py 和.pyc 都比较简单,Python 本身就可以搞定。将 Python 脚本打包成可执行文件有多种方式。Py...

weixin_39616367的博客 4958

python程序打包成可执行文件

大家都知道Python代码的运行需要解释器。 如果我们编写了一个Python代码开发的工具,给别人使用的时候,我们需要让别人做如下两步: 1.安装Python解释器 2.在命令行运行python程序文件,比如: python xxx.py 如果别人是一个非IT人士,使用这样的工具,就太麻烦了。 如果我们能直接让别人直接双击运行我们的程序就好了。 有几款工具可以把 解释器、Python 代码 和 依赖的库 制作到一个目录中,我们只需要双击其中的 可执行程序,就可以运行我们的Python程序了。 其中 PyIn

qq_39172055的博客 1452

Python源文件改写。编写一个程序,读取一个Python源程序文件source.py,将文件中所有除保留字外的小写字母换成大写字母。生成后的文件要能够被Python解释器正确执行。

Python源文件改写。编写一个程序,读取一个Python源程序文件source.py,将文件中所有除保留字外的小写字母换成大写字母。生成后的文件要能够被Python解释器正确执行。 我不知道还有什么其他方法可以从列表中把单词逐个分离出来 所以我用了jieba库 测试文件名:source.py(将此文件放在主程序相同目录) def sum(num): result = 0 for ...

AragakiNoob的博客 3万+

14 执行环境 - 《Python 核心编程》

???? 可调用对象 ???? 代码对象 ???? 语句和内置函数 ???? 执行其他程序 ???? 终止执行 ???? 各类操作系统接口 ???? 相关模块 14.1 可调用对象 许多的python 对象都是我们所说的可调用的,即是任何能通过函数操作符“()”来调用的对象。 要调用可调用对象,函数操作符得紧跟在可调用对象之后。 可调用对象可以通过函数式编程接口来进行调用,如a...

dianzuoting0319的博客 161

[Python]执行环境

一、可调用对象 二、生成和执行代码对象(内建函数) 三、执行Python程序 四、执行非Python程序 [执行操作系统命令]

xl365t 567
上一篇: python 多线程及多进程应用
下一篇: 执行python代码或代码对象--eval--exec--
MusicDancing
博客等级 码龄7年 2684粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值