在Windows上寫完Python腳本,丟到Linux環境下運行,經常發生運行報錯的情況:
查看代碼,發現語句也沒有啥毛病:
此處省略艱辛的排查過程N萬個字…
用file命令查看文件類型:
可以看到行分隔符是CRLF模式,這是Windows格式的換行符,
會在每行行末加多一個^M,Linux不識別,具體可以查看CRLF和LF的區別。
用 cat -v 命令查看文件可以看到,行末都有一個^M符號。
解決方法:
替換掉^M符號,重新生成一個文件:
cat -v oldfile.py | sed -e '1,$s/\^M$//g' > newfile.py
用cat -v命令查看效果,^M符號已經替換:
給上執行權限,執行腳本,問題解決:
ps:只去掉了行末的 ^M 符,所以print語句輸出的 ^M還在。
附上兩個常用軟件設置爲unix格式的步奏:
Notepad++:
pycharm: