python - 带有开放式添加反斜杠的 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] 切片引号解决了它。
推荐阅读
- python - `tf.set_random_seed()` 等同于操作种子?
- c# - 如何使用 Visual Studio Code 创建 C# 项目?
- python-3.x - Python:如何在python的列表中删除重复的相同项目
- ios - 如何在OpenGL中绘制一个点的轮廓?
- sql - 从表中检索列名 -Redshift
- java - Java 中 ++i 与 i++ 的效率
- php - codeception db 打印结果
- jquery - 从 jquery 弹出窗口访问 .net 函数不起作用
- javascript - 使用wx.html2,使用button标签时有一些奇怪的地方
- javascript - 什么时候可以迭代一个空数组?