본문 바로가기

카테고리 없음

[linux/python] 도스식 개행문자(\r, \x0d)를 없애기

윈도우에서 작성하거나 수정한 스크립트나 문서를 리눅스에서 열다 보면, 오류가 생기는 경우가 있다.

이럴 때보면, 리눅스에서는 문장의 끝에 \n이 있을 뿐인데, 윈도우에서는 \r\n이 있다. \r은 16진수로 0D이고, \n은 16진수로 0A이다. 아래 파이썬 스크립트는 \x0d\x0a를 \x0a로 바꾼다. 윈도우에서 작성한 파이썬 스크립트가 리눅스에서 자꾸 에러가 나서 확인해보니, \r 개행 문자 때문이었다. ㅠㅠ

 

#!/bin/python3

#filename : dos2linux
#usage: dos2linux file_to_remove_cr
#copyright: public domain
# writer: madrabbit7골뱅naver.com

import sys
import os

MV_COMMAND = "/usr/bin/mv -rf "
RM_COMMAND = "/usr/bin/rm -rf "

def _dos2linux(infile):
    f = open(infile, 'rb');
    modified = f.read().replace(b"\x0d\x0a", b"\x0a")
    f.close()
#    os.system(RM_COMMAND + infile)

    f = open(infile, 'wb')
    f.write(modified)
    f.close();

#new_filename = "_" + sys.argv[1]

_dos2linux(sys.argv[1])