在 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)}
问题:
我正在尝试将一个字符串转换成一个字典,这样我就可以尝试将它与我的其他字典合并。但是,当我尝试使用 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)}