加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用os.system(“bash code”)在Python脚本中调用bash命令是否很

发布时间:2020-12-15 18:28:21 所属栏目:安全 来源:网络整理
导读:我想知道使用os.system()在 Python脚本中调用bash命令是否是一种好的风格.我也想知道这样做是否安全. 我知道如何在Bash和Python中实现我需要的一些功能,但在Bash中实现它更简单,更直观.但是,我觉得编写os.system(“bash代码”)非常hackish. 具体来说,我想将
我想知道使用os.system()在 Python脚本中调用bash命令是否是一种好的风格.我也想知道这样做是否安全.

我知道如何在Bash和Python中实现我需要的一些功能,但在Bash中实现它更简单,更直观.但是,我觉得编写os.system(“bash代码”)非常hackish.

具体来说,我想将所有以特定扩展名结尾的文件移动到目录中.

在bash:* mv .ext / path / to / destination
在Python(伪代码)中:
对于目录中的文件:
if file.endswith(“ext”):
将文件移动到目的地

在这种情况下,我该怎么办?

首先,您的示例使用mv,这是coreutils中的程序,而不是bash.

使用os.system()调用外部程序被认为是糟糕的风格,因为:

>您正在创建特定于平台的依赖项
>您正在创建特定于版本的依赖项(是的,甚至有时会更改coreutils!)
>您需要检查是否存在外部命令(并且它们位于$PATH中,并且可由用户执行等)
>您必须使用返回代码包装错误检查命令.使用语言错误代码或异常会更好. (os.system()不允许你解析stdout / stderr)
>你必须自己处理用空格引用变量(或者转义它们)
> Python已经通过提供库为您完成了工作!

正如其他人已经提到的那样,查找glob,用于类似shell的模式匹配(globbing)和shutil.否则,您需要的所有内容都已存在于标准库中.

import glob
import shutil

for extfile in glob.glob('*.ext'):
    shutil.move(extfile,dest)

此外,不应使用os.system() – 请查看子进程模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读