首页 / 知识
关于python:如何转义os.system()调用?
2023-04-13 16:56:00

How to escape os.system() calls?使用os.system()时,通常需要转义文件名和其他作为参数传递给命令的参数。 我怎样才能做到这一点? 最好是可以在多个操作系统/外壳上运行的东西,尤其是bash。 我目前正在执行以下操作,但是请确保为此必须有一个库函数,或者至少是一个更优雅/更强大/更有效的选项:
编辑:我已经接受了使用引号的简单答案,不知道为什么我没有想到; 我猜是因为我来自Windows,"和"的行为略有不同。 关于安全性,我理解这个问题,但是在这种情况下,我对os.system()提供的快速简便的解决方案感兴趣,并且字符串的来源不是用户生成的,或者至少是由a输入的 受信任的用户(我)。
自python 3起,
(使用 这是我用的:
外壳程序将始终接受带引号的文件名,并在将其传递给所涉及的程序之前删除其引号。值得注意的是,这避免了文件名包含空格或其他任何讨厌的shell元字符的问题。 更新:如果您使用的是Python 3.3或更高版本,请使用shlex.quote而不是自己滚动。
也许您有使用 以下来自PEP324:
也许 请注意,pipes.quote实际上在Python 2.5和Python 3.1中已损坏,并且不安全使用-它不处理零长度参数。
参见Python问题7476;它已在Python 2.6和3.2及更高版本中修复。 注意:这是Python 2.7.x的答案。
根据消息来源,
另一方面, 在这里,我们提供了平台无关的方式来引用命令行字符串。
用法:
我相信os.system只会调用为用户配置的任何命令外壳,因此我认为您不能以独立于平台的方式进行操作。我的命令外壳可以是bash,emacs,ruby甚至quake3中的任何东西。这些程序中的某些程序并不期望您传递给它们的参数,即使它们这样做,也不能保证它们以相同的方式进行转义。 我使用的功能是:
即:我总是将参数用双引号引起来,然后用反斜杠将双引号内的特殊字符引起来。
真正的答案是:首先不要使用 如果您确实使用了system命令,我将尝试将os.system()调用中的内容列入白名单。
subprocess模块??是一个更好的选择,我建议尽量避免使用os.system / subprocess之类的东西。 |
最新内容
相关内容
linux必须记忆的命令?
linux必须记忆的命令?,工作,系统,地址,命令,信息,管理,目录,基础,网络,路径,Linux文本操作常用命令1、linux常用命令有pwd命令、cd命令、ls命linux命令怎么编写?
linux命令怎么编写?,系统,地址,工作,信息,命令,位置,环境,发行,标准,电脑,Linux命令怎么写cat(连接的缩写)是Linux中最常用的命令之一。它用于在程序执行linux命令?
程序执行linux命令?,系统,工作,地址,环境,信息,管理,命令,文件,目录,程序,linux下如何运行可执行文件1、先将终端所在路径切换到python脚本文不常用的linux命令?
不常用的linux命令?,工作,地址,系统,命令,信息,基础,网络,管理,标准,目录,Linux系统常用操作命令有哪些linux常用命令: pwd命令 该命令的英文linux运维操作命令?
linux运维操作命令?,系统,网络,基础,标准,工具,信息,工作,命令,软件,数据,linux运维命令常用命令1、ls, ls-l, less, head, tail, tail -f, ln, ln -slinux常用命令中wr?
linux常用命令中wr?,地址,工作,系统,命令,信息,目录,管理,网络,常用命令,控制台,linux常用的20个命令1、系统管理相关命令:df、top、free、quotlinux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux打开子目录命令?
linux打开子目录命令?,系统,命令,标准,设备,工作,名称,信息,管理,密码,传播,linux中查看文件和目录的命令是什么1、linux常用命令有pwd命令、clinux命令刷新加载?
linux命令刷新加载?,系统,下来,工具,网上,命令,终端,环境变量,以下,文件,路径,如何在linux添加路径到PATH环境变量中1、设置JAVA_HOME:打开终端linux命令怎么控制的?
linux命令怎么控制的?,地址,工作,系统,标准,命令,电脑,基础,管理,灵活,网站,linux基本操作命令1、linux常用命令有pwd命令、cd命令、ls命令、clinux退出程序命令?
linux退出程序命令?,档案,管理,系统,命令,编辑,进程,模式,文件,程序,指令,linux用VI编辑后保存退出命令是什么啊?linux退出vi编辑命令有四种:使linux磁盘命令dm?
linux磁盘命令dm?,信息,设备,地址,软件,系统,工作,公司,下来,数据,磁盘,linux安装忽略硬盘raid信息dmnoraid1、删除磁盘分区 删除磁盘内残留ra