1. ホーム
  2. python

[解決済み] TypeError: Unicode への強制: 文字列またはバッファが必要です。

2022-01-30 18:23:16

質問

このコードは次のようなエラーメッセージを返します。

  • open (infile, mode='r', buffering=-1) as in_f, open (outfile, mode='w', buffering=-1) as out_f とします。 TypeError: Unicode への強制: 文字列かバッファが必要、ファイルが見つかりました。

    # 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')
    
    

誰か助けてください。

どのように解決するのですか?

各ファイルを2回開こうとしている! まず、こうしてください。

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

を渡すと infile (これはファイルオブジェクトです) を open 関数を再度呼び出します。

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

open は、もちろん最初の引数がファイル名であることを想定しており、オープンされたファイルではありません!

一度だけファイルを開けば大丈夫です。