本人刚开始学习Python。因为学习了数据库和GUI,所以想用图形化界面来控制数据库的操作。
在写代码的过程中使用open()
,来打开文件时,遇到了文件路径的转义问题。虽然在调试时
可以用r''
来解决,但我想用图形化界面获取文件路径,再进行读取。所以势必要把文件路径作为
参数传递。
filename = 'E:\大学\编程\Python\课程资料\homework\test.txt'
f = open(filename)
一开始,像我这样写就会报错
经过百度,我又尝试了许多方法,但都有错误
方法之一:
>>> filename = 'E:\大学\编程\Python\课程资料\homework\test.txt'
>>> filename = r'\\'.join(filename.split("\\"))
>>> filename
'E:\\\\大学\\\\编程\\\\Python\\\\课程资料\\\\homework\test.txt'
无法替换特殊的转义字符
在机缘巧合下,我发现利用文件对话框获取文件路径。
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
那以此方法获取的文件路径会不会有转义问题呢?
>>> from tkinter import filedialog
>>> root = tk.Tk()
>>> root.withdraw()
‘’
>>> file_path = filedialog.askopenfilename()
>>> file_path
'E:/大学/编程/Python/课程资料/homework/test.txt'
>>> open(file_path)
<_io.TextIOWrapper name='E:/大学/编程/Python/课程资料/homework/test.txt' mode='r' encoding='cp936'>
通过filedialog.askopenfilename()
获取的文件路径是Linux的表示方式,而不是Windows的表示方式。
所以就避免了转义问题。
资料来源(https://blog.csdn.net/shawpan/article/details/78759199)