解决方案 | 如何解决subprocess.Popen(cmd)代码中含有空格路径的问题?
一、背景
因为在python中需要用到subprocess.Popen(cmd),其中cmd由一堆连接的字符串构成:譬如,xxx.exe inputdir outputdir -arg1 -arg2
(具体例子:1.exe C:\Users\Administrator\Desktop\my output -arg1 -arg2 )
1.exe C:\Users\Administrator\Desktop\新建文件 夹 C:\Users\Administrator\Desktop\my output -arg1 -arg2
但是我的输入输出文件夹中存在空格,需要解决这个问题,网上的一般方法是加上双引号,估计大部分也能通过这个解决问题。对于路径是变量的情况,更好的解决方法在下面!
二、解决方案
中文博客上有不少误导,搜索到这个才是正确的。
为了防止链接失效,把代码复制过来。
You can either put double quotes around each argument with potential white spaces in it:
cmd = f'"{tar_exe}" -tf "{image_file}"'
subprocess.Popen(cmd, shell=True)
or don't use shell=True and instead put arguments in a list:
subprocess.Popen([tar_exe, '-tf', image_file])
也就是说:在python中把所有参数变为一个变量形成的列表即可。
import subprocess arg1 = "1.exe" #某个程序(可以是绝对路径)
arg2 = inputdir #输入路径变量
arg3 = outputdir #输出路径变量
arg4 = "其他参数"
cmd =[arg1, arg2, arg3, arg4]
ps = subprocess.Popen(cmd)
ps.wait() #让程序阻塞 print("运行结束")
解决方案 | 如何解决subprocess.Popen(cmd)代码中含有空格路径的问题?的更多相关文章
- curl请求的url中含有空格
curl请求的url中含有空格时(例如rul的参数是sql查询语句,url=www.tets.com/query.php?sql=select * from t1),curl_easy_perform ...
- url编码--url中含有空格问题
开发web服务中,发现当url中含有空格时,会报 400 error: bad request sytanx,经分析,url中含有特殊字符时,服务端可能无法识别.如+,空格,/,?,%,#,& ...
- HTML代码中的空格和空行
HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格. 例子1:(文本内容中的连续空格) 代码 <p>这段文本中,输入连续的空格 大概输入了十个.</p> 显示效 ...
- beautiful soup 遇到class标签的值中含有空格的处理
用Python写一个爬虫,用BeautifulSoup解析html.其中一个地方需要抓取下面两类标签:<dd class="ab " >blabla1</dd&g ...
- 解决python代码中含有中文报错
python中写入中文时报错如下图所示: 依照网上解决方法:在py文件中加入:#encoding=utf-8 然后继续报错如下图所示: 解决方法: 在py文件中加入: import sysreload ...
- java代码中获取classpath路径
Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...
- tomcat下获取当前路径的url中含有空格解决方法
参考博文(http://www.360doc.com/content/11/1009/17/4602013_154657565.shtml) web项目发布到Tomcat之后,如果tomcat是安装在 ...
- 解决 idea template jsp模板中使用自定义路径 模板不显示问题
${} 是一个模板中的关键字,所以建立时需要用 \ 注释即可正常显示 ${APP_PATH}
- JAVA-替换html中图片的路径-从html代码中提取图片路径并下载(完整版)
transHtml方法实现提取网络图片中得图片路径,将其重新下载到本地,并替换html中原来得路径 package com.googosoft.until; import java.io.Buffer ...
- 用正则从html代码中提取图片路径
$str = '<div align="center"> <img src="http://www.99tyg.com/public/images/e8 ...
随机推荐
- JDK源码阅读-------自学笔记(十一)(java.lang.String包装类)
核心要点 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" String的核心就是char[]字符串,外部写的string对 ...
- IPv6 — 地址格式与寻址模式
目录 文章目录 目录 前文列表 IPv6 的地址格式 站点前缀 地址生成方式 IPv6 地址的分类以及寻址模式 单播(Unicast)地址 Interface ID 全球唯一地址(Global Uni ...
- CentOS7配置NFS服务并设置客户端自动挂载
在CentOS7中配置NFS服务并设置客户端自动挂载的步骤如下: NFS服务端配置 安装NFS服务: 首先,你需要在CentOS 7服务器上安装NFS服务.你可以使用yum命令来安装: yum ins ...
- T2T-ViT:更多的局部结构信息,更高效的主干网络 | ICCV 2021
论文提出了T2T-ViT模型,引入tokens-to-token(T2T)模块有效地融合图像的结构信息,同时借鉴CNN结果设计了deep-narrow的ViT主干网络,增强特征的丰富性.在ImageN ...
- 带你深入领略 Proxy 的世界
Proxy 是 es2015 标准规范加入的语法,很可能你只是听说过,但并没有用过,毕竟考虑到兼容的问题,不能轻易地使用 Proxy 特性. 但现在随着各个浏览器的更新迭代,Proxy 的支持度也越来 ...
- 基于 Kubernetes 的 CICD 基础设施即代码
在上一篇基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以 ...
- kubernetes ingress部署
ingress概念 ingress与service,deployment同样都是k8s中的一种资源 ingress用于实现域名方式访问k8s内部应用 安装ingress 1. 安装helm: wget ...
- 继承,super,重写,多态,抽象,接口
继承,super,重写,多态,抽象,接口 继承 extends 用于表示两个类之间的继承关系,继承是OOP的四大特性之一,他允许一个类(称之为子类或派送类) 继承另一个类(称之为父类或基类)的变量和方 ...
- NOIP模拟70
T1 暴雨 解题思路 \(f_{i,j,k,0/1}\) 表示前 i 个铲平 j 个当前最高的是 k 并且当前是 奇数/偶数 的方案数. 由于只可以铲平 k 块,因此对于同一种 \(i,j\) 而言高 ...
- VmWare虚拟机和主机配置为同一网段IP
参考博客:将虚拟机IP与主机IP设置在同一网段的方法 - 天懿 - 博客园 (cnblogs.com) 主机地址 主机通过WiFi连接,地址信息为: 虚拟机配置 选择编辑-->虚拟网络编辑器-- ...