2013-12-17 19 views
4

我不確定這裏出現了什麼問題。我有一個我想過濾的csv文件。我想刪除以'@'開頭的所有行,以及第三列爲字符串'chrM'的所有行。進出口基本設置我的代碼最多是喜歡這裏的答案:'_csv.writer'對象沒有屬性'寫'

TypeError: expected a character buffer object

但是我得到一個錯誤。

import re 
import csv 

inputSamFile = 'excerpt' 
outSamFile = 'filternoM' 

with open(inputSamFile) as inputSam, open(outSamFile, 'wt') as outSam: 
    inputSamCont = csv.reader(inputSam, delimiter = '\t') 
    outSamCont = csv.writer(outSam, delimiter = '\t') 
    for line in inputSamCont: 
     if line[0].startswith('@'): 
      continue 
     elif line[2] == 'chrM': 
      continue 
     else: 
      outSamCont.write(line) 

回溯(最近通話最後一個): 文件 「filterMito.py」 19行,在 outSamCont.write(ProcessLine從(線)) AttributeError的: '_csv.writer' 對象有沒有屬性'寫'

我在做什麼錯了

+0

這是''作家'不''寫'... –

+0

@Jon Clements謝謝 –

+0

我有同樣的問題,但'writeheader'我從文檔複製名稱,它是如何不存在? –

回答

3

您可能正在尋找.writerow()

我也遇到了這個問題,因爲我的文檔尾隨使用.write(),但csv.writer對象使用.writerow()

+0

我有同樣的問題,但與'writeheader'我從文檔複製名稱,它是如何不存在? –

2

該錯誤告訴你你需要知道的一切。

AttributeError: '_csv.writer' object has no attribute 'write' 

在你的代碼,創建對象:

outSamCont = csv.writer(outSam, delimiter = '\t') 

然後嘗試調用.write()方法:

outSamCont.write(line) 

(或者,因爲它是在回溯

outSamCont.write(ProcessLine(line)) 

我不知道爲什麼喲你已經發布了不同的代碼給你正在運行)。

但是,該對象csv.writer沒有方法write,因此是錯誤消息。請參閱the documentation獲取csv.writer對象的方法列表,並選擇適當的對象。