在python中迭代文件

大家好,不久前我写了一篇关于自动化本地客户端访问BLAT网络服务器的帖子,但今天我有一个简单得多的帖子。我想要一个批处理文件,并删除所有奇数行。请参见下面的内容:
示例文件:
>MusmusculusmiR-344
UGAUCUAGCCAAAGCCUGACUGU
>MusmusculusmiR-345
UGCUGACCCCUAGUCCAGUGC
>MusmusculusmiR-346
UGUCUGCCCGAGUGCCUGCCUCU
>MusmusculusmiR-350
UUCACAAAGCCCAUACACUUCA
我需要删除所有以'>'开头和以'\n'结尾的行。我在下面有一些代码,但它只是隔离了我想要删除的那部分字符串。我需要反其道而行之。我知道有一些简单的方法我在这里完全错过了!

选择 | 换行 | 行号
  1. #!/usr/bin/env python
  2. # written 7/28/2007
  3. # by Mark O'Connor
  4.  
  5. def Resize( filename ):
  6.     line = 0
  7.     collect = []
  8.     fp = file( filename )
  9.     data = fp.read()
  10.     fp.close()
  11.     #print data
  12.     while line != -1:
  13.         start = data.find('>', line+1)
  14.         end = data.find ('/n', start)
  15.         chunk = data[start:end]
  16.     return chunk
  17.  
  18.  

谢谢,
标记

# 回答1


嘿,马克。
我会用这样的话:

选择 | 换行 | 行号
  1. outList = []
  2. f = open(fileName)
  3. for line in f:
  4.     if line.startswith('>'):
  5.         continue
  6.     outList.append(line)
  7. f.close()
  8. f = open(newFileName, 'w') # or old one to replace it
  9. f.writelines(outLIst)
  10. f.close()

未经测试,但总体上是健全的。

# 回答2


谢谢!这真的奏效了
标记
# 回答3


像所有迭代器一样,文件上挂有一些非常酷的方法。这个例子只是触及了皮毛。
任何时候,
巴顿
# 回答4


甚至:

选择 | 换行 | 行号
  1. out = []
  2. with open(fileName) as f:
  3.     for line in f:
  4.         if line.startswith('>'):
  5.             continue
  6.         out.append(line)
  7.  
  8. with open(newFileName, 'w') as f:
  9.     f.writelines(out)
  10.  
# 回答5


@Bartonc
现在我在听了。那些很酷的方法是什么?
# 回答6


就我个人而言,我喜欢Python的原因有很多,尤其是在解析和转换对象时。下一段代码应该会将您带到下一个级别的Python开发。

选择 | 换行 | 行号
  1. input = open("inputfile.txt")
  2. output = open("outputfile.txt", 'w')
  3.  
  4. output.writelines([(line) for line in input if not line.startswith('>')])
  5.  

就是这样!

标签: python

添加新评论