一、背景

因为在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

但是我的输入输出文件夹中存在空格,需要解决这个问题,网上的一般方法是加上双引号,估计大部分也能通过这个解决问题。对于路径是变量的情况,更好的解决方法在下面!

二、解决方案

中文博客上有不少误导,搜索到这个才是正确的。

https://stackoverflow.com/questions/60290732/subprocess-with-a-variable-that-contains-a-whitespace-path

为了防止链接失效,把代码复制过来。

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)代码中含有空格路径的问题?的更多相关文章

  1. curl请求的url中含有空格

    curl请求的url中含有空格时(例如rul的参数是sql查询语句,url=www.tets.com/query.php?sql=select * from t1),curl_easy_perform ...

  2. url编码--url中含有空格问题

    开发web服务中,发现当url中含有空格时,会报 400 error: bad request sytanx,经分析,url中含有特殊字符时,服务端可能无法识别.如+,空格,/,?,%,#,& ...

  3. HTML代码中的空格和空行

    HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格. 例子1:(文本内容中的连续空格) 代码 <p>这段文本中,输入连续的空格 大概输入了十个.</p> 显示效 ...

  4. beautiful soup 遇到class标签的值中含有空格的处理

    用Python写一个爬虫,用BeautifulSoup解析html.其中一个地方需要抓取下面两类标签:<dd class="ab " >blabla1</dd&g ...

  5. 解决python代码中含有中文报错

    python中写入中文时报错如下图所示: 依照网上解决方法:在py文件中加入:#encoding=utf-8 然后继续报错如下图所示: 解决方法: 在py文件中加入: import sysreload ...

  6. java代码中获取classpath路径

    Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...

  7. tomcat下获取当前路径的url中含有空格解决方法

    参考博文(http://www.360doc.com/content/11/1009/17/4602013_154657565.shtml) web项目发布到Tomcat之后,如果tomcat是安装在 ...

  8. 解决 idea template jsp模板中使用自定义路径 模板不显示问题

    ${} 是一个模板中的关键字,所以建立时需要用 \ 注释即可正常显示  ${APP_PATH}

  9. JAVA-替换html中图片的路径-从html代码中提取图片路径并下载(完整版)

    transHtml方法实现提取网络图片中得图片路径,将其重新下载到本地,并替换html中原来得路径 package com.googosoft.until; import java.io.Buffer ...

  10. 用正则从html代码中提取图片路径

    $str = '<div align="center"> <img src="http://www.99tyg.com/public/images/e8 ...

随机推荐

  1. 密码学—仿射密码Python程序

    文章目录 仿射密码 加密算法 解密算法 仿射密码 古典密码,且属于单表加密. 加密算法 仿射密码公式 c = m×k + b mod 26 c是密文,m是明文,m作为26字母中的明文,因此计算出来的密 ...

  2. CentOS7 升级 curl 到 HTTP2

    目录 文章目录 目录 编译安装 YUM 升级 编译安装 安装编译环境: yum -y groupinstall "Development Tools" yum -y install ...

  3. 4G EPS 中建立 eNB 与 MME 之间的 S1 连接

    目录 文章目录 目录 前文列表 S1 连接 eNB 的 S1 连接 UE 的 S1 连接 前文列表 <4G EPS 中的小区搜索> <4G EPS 中的 PLMN 选择> &l ...

  4. Python:Python对象模型与序列迭代陷阱

    1. Python对象模型与浅拷贝/深拷贝 1.1 Python对象模型和引用 在我们讲解Python的序列修改陷阱之前,先巩固一下Python的对象模型和浅拷贝/深拷贝的知识. 众所周知,Pytho ...

  5. Avalonia中的线性渐变画刷LinearGradientBrush

    在WPF中使用Shape实现复杂线条动画后,尝试在Avalonia中也实现同样效果.尽管官方提供了从WPF到Avalonia的快速入门文档,但由于第一次使用Avalonia,体验过程中并不是很顺利,主 ...

  6. C# dynamic动态对象赋值

    dynamic 如果接收的是匿名对象,是无法为属性赋值的,而如果是接收的定义对象,又无法扩展字段. 解决办法序列化为json字符串,然后用Dictionary反序列化,就能赋值了.也能扩展新的字段. ...

  7. Docker批量删除容器/镜像

    1.删除所有的容器 docker rm `docker ps -a -q` 2.删除所有的镜像 docker rmi `docker images -q` 提示: -q参数:只显示容器ID

  8. WPF插件之 - PropertyChanged.Fody使用详解

    总目录文章目录总目录一.PropertyChanged.Fody是什么?二.PropertyChanged.Fody的安装三.PropertyChanged.Fody的功能1. 特性1 实现属性通知的 ...

  9. jenkins任务构建

    创建一个Jenkins任务并构建项目: 这个项目名称只要确定,它就会在 /var/lib/jenkins/jobs/ 生成一个 freestyle 的目录,如果需要删除,删除了就需要重启Jenkins ...

  10. NOIP模拟87(多校20)

    前言 题目不难,但是个人感觉小细节有一些,然后有亿点卡常.. 感觉对于笛卡尔树的题目看不出算法,然后代码实现方面细节注意太少,常数有点大. 下次注意吧. T1 集合均值 解题思路 感觉应该是期望题里面 ...