我正在写一个名为的 python 脚本flac2m4a哪个调用ffmpeg将 .flac 文件转换为 .m4a 文件。核心程序是这样的:
cmd = "ffmpeg -i %s -acodec alac %s.m4a" % (sys.argv[1], sys.argv[1][:-5])
os.system(cmd)
我可以这样使用该程序:
./flac2m4a path_to_the_song.flac
但是当我为一些名称中带有特殊字符的歌曲运行它时:
./flac4m4a.py Justin\ Bieber\ -\ Never\ Say\ Never\ -\ The\ Remixes/01\ -\ Never\ Say\ Never\ \(feat.\ Jaden\ Smith\).flac
在linux下,当我按tab键自动完成时,特殊字符将被转义\
,但是当我读到它时sys.argv[1]
,它们将被Python转换为普通字符串:
Justin Bieber - Never Say Never - The Remixes/01 - Never Say Never (feat. Jaden Smith).flac
所以我只想知道如何阅读argv[1]
完全按照用户输入的内容(那些\
)
虽然可以为 shell 引用字符串,但您不应该首先使用 shell 来执行命令,这样就不需要任何引用。使用subprocess.call()
代替os.system()
:
subprocess.call(["ffmpeg", "-i", sys.argv[1], "-acodec", "alac",
sys.argv[1][:-5] + ".m4a"])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)