我有一个类似“Nena-Nur getraeumt(1982)HD 0815007.mp3”的文件名,我可以在目录中看到它,但是在python子进程中,我的代码说找不到该文件。有没有一种方法可以绕过或编码字符串,使其能够找到文件?这是我的代码片段:
try:
p = subprocess.Popen(["avconv" , "-y" , "-i" , upload_music_file , "-acodec" , "pcm_s16le" , process_file], universal_newlines=True, stdout=subprocess.PIPE)
out, err = p.communicate()
retcode = p.wait()
except IOError:
pass
假设upload_music_文件是“Nena-Nur getraeumt(1982)HD 0815007.mp3”,而process_file是“process”_音乐.mp3““
我得到了一个错误:
avconv version 0.8.12-6:0.8.12-1, Copyright (c) 2000-2014 the Libav developers built on Jun 1 2014 17:03:01 with gcc 4.7.2 /music/Nena - Nur getraeumt (1982) HD 0815007.mp3 : No such file or directory
只有当我想从档案中得到线索的时候: -bash:意外标记“(”附近出现语法错误
有没有一种方法可以处理upload_music_文件字符串以使其正常工作?在
在我的例子中,如果在使用python时找不到文件,请检查文件名中是否有特殊的非打印字符。在
从文件名中删除所有回车符、换行符和换行符,您可以在linux上用ls-b检查其他字符,看看需要转义什么。在
因此,通常,当使用
Popen
或类似的东西时,您不希望依赖于相对路径。既然它存在,我将继续猜测这个错误不是一个错误,而是建议您使用绝对路径而不是相对路径,这是一个非常常见的问题。在特别是,如果您当前以以下身份访问文件:
我建议将其称为类似于:
^{pr2}$但同样,只有你知道真正的绝对路径。在
另外,我建议从您的文件名中删除空格,因为它们的痛苦远远超过了它们的价值,但这是个人喜好的问题。在
至于bash错误,这在处理带有特殊字符的文件名时非常常见。您必须用反斜杠转义每个特殊字符,或者将文件名更改为更合理的名称:
相关问题 更多 >
编程相关推荐