在 dict 错误中转换字符串 - 行继续字符后出现意外字符 - python

Turn string in dict error - unexpected character after line continuation character - python

问题:

我正在尝试将一个字符串转换成一个字典,这样我就可以尝试将它与我的其他字典合并。但是,当我尝试使用 eval() 命令时,它给出了一个错误 unexpected character after line continuation character (<string>, line 1)

目标:

我的目标是将我的 mp4 的路径添加到我的元数据字典中,这样我就可以一次性将数据插入到 sqlite 中。

这是我获取所需路径的代码:

import os
import subprocess
##from tinytag import TinyTag #that is to pull metadata from my mp4s

def playmusic(name):
    count = 0
    extf = ['$RECYCLE.BIN','System Volume Information']
    for root, dirs, files in os.walk(r'\Vgmstation\e\', followlinks=True):
        dirs[:] = [d for d in dirs if d not in extf]
        for file in files:
            if name in file and file.endswith(".mp4"):
                vlc='C:/Program Files/VideoLAN/VLC/vlc.exe'
                music=str(os.path.join(file))
                musicpath=str("{"+'path: '+'+(os.path.join(root,file)+'+'}'))
                musicpath_dict = eval(musicpath)
##              tm = TinyTag.get(musicpath)
##              tmd = tm.duration
                musiconly= os.path.splitext(music)[0]
                print(musicpath)
                count = count + 1 
                if count == 5:
                    break
        if count >= 5:
            break
    print("Finish")
    input()
try:
    s=raw_input("name: ")
    playmusic(s)
except Exception as e:
    print(e)
    print("Error")

以上代码 运行 的结果如下:

name: m
{path: \Vgmstation\e\Dreamcast\Dead or Alive 2 Unknown.mp4}
{path: \Vgmstation\e\Dreamcast\Dead or Alive 2 Unknown.mp4}
{path: \Vgmstation\e\Dreamcast\Dead or Alive 2\Blazed Up Melpomene.mp4}
{path: \Vgmstation\e\Dreamcast\Dead or Alive 2\Bomb Factory - Exciter.mp4}
{path: \Vgmstation\e\Dreamcast\Dead or Alive 2\Bomb Factory - Exciter2.mp4}
Finish

这是我尝试将路径转换为字典的代码:

##code from above
musicpath_dict = eval(musicpath)
#code from above

这是我打印 musicpath_dict :

的结果
name: m
unexpected character after line continuation character (<string>, line 1)
Error

我认为问题出在字符串中的斜线,但我需要它们原样存在。目标是向我的 sqlite 数据库添加一个路径行,这样我就可以提取文件的位置以便稍后播放歌曲。 (如果有道理)

如果有人有任何建议或想法,请告诉我。

感谢您的宝贵时间,

永远不要使用 eval 创建变量。它可能会导致错误并且完全没有必要。直接创建字典就可以得到你想要的:

musicpath_dict = {'path': os.path.join(root,file)}