Programing

TypeError : 유니 코드로 강제 변환 : 문자열 또는 버퍼 필요

lottogame 2020. 12. 31. 07:50
반응형

TypeError : 유니 코드로 강제 변환 : 문자열 또는 버퍼 필요


이 코드는 다음 오류 메시지를 반환합니다.

  • open (infile, mode = 'r', buffering = -1) as in_f, open (outfile, mode = 'w', buffering = -1) as out_f : TypeError : coercing to Unicode : need string or buffer, file found

    # Opens each file to read/modify
    infile=open('110331_HS1A_1_rtTA.result','r')
    outfile=open('2.txt','w')
    
    import re
    
    with open (infile, mode='r', buffering=-1) as in_f, open (outfile, mode='w', buffering=-1) as out_f:
        f = (i for i in in_f if i.rstrip())
        for line in f:
            _, k = line.split('\t',1)
            x = re.findall(r'^1..100\t([+-])chr(\d+):(\d+)\.\.(\d+).+$',k)
            if not x:
                continue
            out_f.write(' '.join(x[0]) + '\n')
    

누군가 나를 도와주세요.


각 파일을 두 번 열려고합니다! 먼저 다음을 수행합니다.

infile=open('110331_HS1A_1_rtTA.result','r')

그런 다음 infile(파일 객체 인) open함수에 다시 전달합니다.

with open (infile, mode='r', buffering=-1)

open 물론 첫 번째 인수는 열린 파일이 아니라 파일 이름이 될 것으로 예상합니다!

파일을 한 번만 열면 괜찮습니다.


덜 구체적인 경우의 경우 (질문의 코드뿐만 아니라-이 일반 오류 메시지에 대한 Google의 첫 번째 결과 중 하나이기 때문입니다.이 오류는 None 인수로 특정 os 명령을 실행할 때도 발생합니다.

예를 들면 :

os.path.exists(arg)  
os.stat(arg)

arg가 None이면이 예외를 발생시킵니다.


파일 개체를 파일 이름으로 전달하려고합니다. 사용해보십시오

infile = '110331_HS1A_1_rtTA.result'
outfile = '2.txt'

코드 상단에 있습니다.

(의 두 배 사용하지뿐만 아니라 open()원인을 그 파일을 다시 열어 그것은 또한 수단 시도와 문제 infileoutfile그들은 아마도 프로그램이 종료되면 폐쇄거야하지만, 실행 과정에서 폐쇄되지 않습니다 있습니다.)


다음은 Python 2에서 찾은 가장 좋은 방법입니다.

def inplace_change(file,old,new):
        fin = open(file, "rt")
        data = fin.read()
        data = data.replace(old, new)
        fin.close()

        fin = open(file, "wt")
        fin.write(data)
        fin.close()

예 :

inplace_change('/var/www/html/info.txt','youtub','youtube')

참조 URL : https://stackoverflow.com/questions/6680066/typeerror-coercing-to-unicode-need-string-or-buffer

반응형