0
点赞
收藏
分享

微信扫一扫

python调用程序路径中包空格,及包含特殊字符问题

解决办法

import os
s = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"'
print(s)
os.system(s)

也就是在调用的路径中如果包含空格,需要将调用的路径用​​"​​ 引起来

扩展知识

1.windows平台这里只能用 ​​双引号​​​,​​cmd​​​不能识别​​单引号​​​包含的路径 ,linux即可以用​​双引号​​​也可以用​​单引号​​,但只要有路径中包含空格就需要用双引号包裹住

2.为什么前面的程序去掉 ​​r​​​ 也能运行?
首先要明白 ​​​r​​​表示什么意思,​​r​​在python字符串中表示原始字符,也就是你字符串中写的是什么就是什么,不经过转义,例如

print(r"\\\\")
print("\\\\")
print("\"")
print(r"\"")

输出:

\\\\
\\
"
\"

第一种因为用r表示原始字符串所以,所以都不转义
第二中转义两个 ​​​\\​​​ 第三种可能大部分人不知道还有这种写法(或者不常用),一般如果要输出 ​​"​​ 就用 ​​'​​包裹起来就行了,但是其实是可以转义输出出来的
第四种同理

转义的作用其实主要是为了 与python内置的语法与 你声明的字符串中包含的字符区分开来
回归问题,为什么去掉​​​r​​​ 也能运行,原因就很明显了,因为 路径中没有与python 内置语法相同的字符,例如如果路径中包含双引号,或者路径首字母为 u (\u Unicode与中文互转 )等等,这类路径就必须加 ​​r​​​ ,所以前面加上​​r​​是最保险的

其实导致问题怎么复杂的主要原因在于
在windows上的路径分割很奇葩与转义字符的语法一样为​​​\​​​,在linux上路径分割是​​/​​​, 所以linux 几乎没有调用路径的问题,另外很多编程语言转义字符都是​​\​​ ,或许这也是为什么编程习惯于用linux 原因吧


作者:Hello_wshuo​


举报

相关推荐

0 条评论