2011年8月25日星期四

"No newline at end of file"

用 shell 写了个按文件名排序生成 m3u 的脚本(写入部分的语句是echo "#EXTM3U" > "$m3ufile"; find "$dir" -iname "*.mp3" | sort >> "$m3ufile" ),后来发现不够用,用 python 重写,读取 id3 并进行多关键字排序,再写入文件(写入部分的语句是 f.write("\n".join(["#EXTM3U"]+[i[0] for i in musiclist])) )。同样的专辑生成的 m3u 文件应该是一样的,但是 wc -l 的结果却是 py 脚本生成的 m3u 行数比 sh 脚本生成的 m3u 行数少一行, ls -l 的结果是两者相差一个字节,可是 vim -d 却一点红色都没有,好奇怪。
google 了一下,用 diff 比较,果然有差别: python 生成的 m3u 在最后一行有一个提示"\ No newline at end of file
" 。顺藤摸瓜, blog.linux.org.tw/~jserv/archives/001933.html 里说到根据标准每一行结尾必须有换行符……于是把 python 里相关的语句改为 f.write("\n".join(["#EXTM3U"]+[i[0] for i in musiclist]+[""])) ,重新运行就正常了。

--
Sent from my Nokia N900
纯良触手姬,不腐不折腾

没有评论:

发表评论