如何在不转义字符串的情况下读取argv值?

2024-02-14

我正在写一个名为的 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(使用前将#替换为@)

如何在不转义字符串的情况下读取argv值? 的相关文章

随机推荐