如何解决带有开放式反斜杠的Python kivy,在替换时引发无效参数
我正在尝试在kivy应用程序中打开文本文件。代码如下:
class kivyx(MDApp):
def __init__(self,*args,**kwargs):
self.theme_cls.theme_style = "Light"
super().__init__(**kwargs)
message = StringProperty('Drop Test')
def build(self):
Window.bind(on_dropfile=self.on_file_drop)
print("MDlabel")
return MDLabel(text=self.message,halign="center")
def on_file_drop(self,window,file_path):
self.message = str(file_path)
path = str(file_path)[1:]
getPath(path)
return MDLabel(text=self.message,halign="center")
def getPath(path):
print(path)
with open(path.replace("\\\\","/"),"r") as f:
print(f.read())
kivyx().run()
这是我的答复:
MDlabel
[INFO ] [Base ] Start application main loop
'C:\\AMFTrace.log'
[INFO ] [Base ] Leaving application in progress...
Traceback (most recent call last):
File "d:/dev/SpectrumX/kivyx.py",line 33,in <module>
kivyx().run()
File "C:\Users\tkulk\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\app.py",line 950,in run
runTouchApp()
File "C:\Users\tkulk\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\base.py",line 572,in runTouchApp
EventLoop.mainloop()
File "C:\Users\tkulk\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\base.py",line 349,in mainloop
self.window.mainloop()
File "C:\Users\tkulk\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\core\window\window_sdl2.py",line 575,in mainloop
self.dispatch('on_dropfile',dropfile[0])
File "kivy\_event.pyx",line 705,in kivy._event.EventDispatcher.dispatch
File "kivy\_event.pyx",line 1248,in kivy._event.EventObservers.dispatch
File "kivy\_event.pyx",line 1172,in kivy._event.EventObservers._dispatch
File "d:/dev/SpectrumX/kivyx.py",line 24,in on_file_drop
getPath(path)
File "d:/dev/SpectrumX/kivyx.py",line 30,in getPath
with open(path.replace("\\\\","r") as f:
OSError: [Errno 22] Invalid argument: "'C:/AMFTrace.log'"
这在python解释器中有效,但是当我使用它时会添加四个反斜杠:
with open(path,"r") as f:
所以我添加了替换。可能是什么问题?
当我直接定义路径时,它也起作用
with open("C:/AMFTrace.log","r") as f:
但这没关系,因为两者都是类型
<class 'str'>
解决方法
我不知何故以一种带有单引号的形式获取路径-请注意,打印输出包括引号,而错误消息包括两组引号。 用[1:] [:-1]切引号即可解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。