赞
踩
1.os.system
仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
在Ubuntu系统的输出为:
>>> import os
>>> os.system("ls")
LICENSE create_splits_LSCC_CM_tumor.py datasets eval_mtl_concat_result.txt main_mtl_concat_result.txt splits_LSCC_CCRCC test.py
LSCC_CM create_splits_copy.py docs eval_results main_mtl_concat_tumor_copy.py splits_LSCC_CCRCC_tumor utils
create_splits.py create_splits_help eval_mtl_concat_LSCC_CCRCC.py main_mtl_concat_LSCC_CCRCC.py models splits_LSCC_CM
create_splits_LSCC_CCRCC.py create_splits_result.txt eval_mtl_concat_LSCC_CM.py main_mtl_concat_LSCC_CM.py results splits_LSCC_CM_Augmentation
create_splits_LSCC_CM.py data_preprocess eval_mtl_concat_copy.py main_mtl_concat_copy.py results_LSCC_CCRCC splits_LSCC_CM_tumor
create_splits_LSCC_CM_augmentation.py dataset_csv eval_mtl_concat_help main_mtl_concat_help splits splits_copy
0
2.os.popen
该方法不但执行命令还返回执行后的信息对象。
>>> import os
>>> tmp=os.popen("ls *.py").readlines()
>>> tmp
['create_splits.py\n', 'create_splits_LSCC_CCRCC.py\n', 'create_splits_LSCC_CM.py\n', 'create_splits_LSCC_CM_augmentation.py\n', 'create_splits_LSCC_CM_tumor.py\n', 'create_splits_copy.py\n', 'eval_mtl_concat_LSCC_CCRCC.py\n', 'eval_mtl_concat_LSCC_CM.py\n', 'eval_mtl_concat_copy.py\n', 'main_mtl_concat_LSCC_CCRCC.py\n', 'main_mtl_concat_LSCC_CM.py\n', 'main_mtl_concat_copy.py\n', 'main_mtl_concat_tumor_copy.py\n', 'test.py\n']
>>> tmp=os.popen("ls *.py")
>>> tmp
<open file 'ls *.py', mode 'r' at 0x7f669a1545d0>
注:
popen()方法语法格式如下:os.popen(command[, mode[, bufsize]])
参数
返回值
返回一个文件描述符号为fd的打开的文件对象
3.使用模块 subprocess
>>> import subprocess >>> p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) >>> p <subprocess.Popen object at 0x7f669a112410> >>> for line in p.stdout.readlines(): ... print line, ... LICENSE LSCC_CM create_splits.py create_splits_LSCC_CCRCC.py create_splits_LSCC_CM.py create_splits_LSCC_CM_augmentation.py create_splits_LSCC_CM_tumor.py create_splits_copy.py create_splits_help create_splits_result.txt data_preprocess dataset_csv datasets docs eval_mtl_concat_LSCC_CCRCC.py eval_mtl_concat_LSCC_CM.py eval_mtl_concat_copy.py eval_mtl_concat_help eval_mtl_concat_result.txt eval_results main_mtl_concat_LSCC_CCRCC.py main_mtl_concat_LSCC_CM.py main_mtl_concat_copy.py main_mtl_concat_help main_mtl_concat_result.txt main_mtl_concat_tumor_copy.py models results results_LSCC_CCRCC splits splits_LSCC_CCRCC splits_LSCC_CCRCC_tumor splits_LSCC_CM splits_LSCC_CM_Augmentation splits_LSCC_CM_tumor splits_copy test.py utils >>> retval = p.wait()
注:subprocess 模块首先推荐使用的是它的 run 方法,更高级的用法可以直接使用 Popen 接口。
run 方法语法格式如下:subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
参数:
4.使用模块 commands
>>> import commands
>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'getoutput', 'getstatus', 'getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Fri Dec 10 11:53:04 CST 2021'
>>> commands.getstatusoutput("date")
(0, 'Fri Dec 10 11:53:58 CST 2021')
注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现错误:
参考链接:https://www.jb51.net/article/56490.htm
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。