在python中路径含有空格的问题及解决
在python中路径含有空格的解决
Application.filename=tkinter.filedialog.askopenfilename(filetypes=[('docx|doc格式','*.docx;*.doc')]) #获取的docx文件路径通过函数tkinter.filedialog.askopenfilename()获取的路径使用/做分隔符
而word.Documents.Open(路径)中的路径使用\为分隔符
解决方法
s = Application.filename.split("/")#解决文件夹及文件路径含有空格。原因是tkinter.filedialog.askopenfilename获取的路径(Application.filename)分隔符是/而日文系统 \.
path_test = ''
for i in s:
path_test = path_test + i + '\\\\' #此处无法使用r'路径格式'因此在上面 使用'\\\\'格式处理
path_test1 = path_test[0:-2]
path_test2 = path_test1python调用程序路径中包空格,及包含特殊字符
解决办法
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 原因吧
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
一文详解如何使用Python SDK在Collection中进行相似性检索
这篇文章主要为大家详细介绍了如何通过Python SDK在Collection中按分组进行相似性检索,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下2025-10-10
OpenCV3.0+Python3.6实现特定颜色的物体追踪
这篇文章主要为大家详细介绍了OpenCV3.0+Python3.6实现特定颜色的物体追踪,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-07-07
django开发之settings.py中变量的全局引用详解
当网站里面的一些内容,如邮箱,网站标题,网站的描述,这些东西我们可以存在数据库中也可以存放在我们的setting 文件中,这篇文章主要给大家介绍了django中settings.py变量的全局引用的相关资料,文中介绍的非常详细,需要的朋友可以参考下。2017-03-03


最新评论