在处理文本文件时,很多时候需要我们处理跨行的数据,但是用for循环处理不是很方便,想了一个歪招来处理不是很大的数据。

核心思想就是将上一行的东西存在一个列表里,到下一行用完这个数据在循环体里将列表初始化,再将这行数据存到列表里,这样循环就可以把两行数据联系起来。

另外这样做的还有另外一个好处,就是可以初始化第一行,我们可以通过判断这个“传递列表”空与否来区分标题行的输入和其他循环体的输入情况。

from __future__ import division

from sys import argv

from itertools import islice

Mutation = open('DivFile_sort_chr' + argv[1] +'.txt',"r")

REC = open('GeneticMap_Chr' + argv[1],"r")

RECList = open('REC_Chr_' + argv[1], "a")

transList = []

SNPPosList = []

rholist = []

for lines in islice(Mutation, 1, None):

    line = lines.strip('\n').split("\t")

    POS = line[0]

    SNPPosList.append(POS)

print "SNPPos done"

for lines in islice(REC, 1, None):

    line = lines.strip('\n').split("\t")

    if transList == []:

        transList.append((line[0],line[1]))

        RECList.write("position\trate\n")

        RECList.write('%s\t%s\n' %(line[0],0))

        print "headline"

    else:

        rho = (float(line[1]) - float(transList[0][1])) / (float(line[0]) - float(transList[0][0]))

        for i in SNPPosList:

            if int(i) < int(line[0]) and int(i) > int(transList[0][0]):

                index = int(SNPPosList.index(i) - 1)

                site_rho = (int(i) - int(SNPPosList[index])) * rho

                RECList.write('%s\t%s\n' %(i,site_rho))

            else:

                continue

        transList = []

        transList.append((line[0],line[1],rho))

        rholist.append(rho)

print rholist

for i in SNPPosList:

    if i > int(transList[0][0]):

        index = int(SNPPosList.index(i) - 1)

        site_rho = (int(i) - int(SNPPosList[index])) * rho

        RECList.write('%s\t%s\n' %(i,site_rho))

    else:

        continue

Mutation.close()

REC.close()

RECList.close()

【python】文件处理行与行之间的内容的更多相关文章

  1. Python文件使用“wb”方式打开,写入内容

    Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...

  2. 如何用python爬取两个span之间的内容

    Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...

  3. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  4. 解决命令行运行python文件,出现No module named *** 报错问题

    有时候在一个项目中运行的时候,可能是之前已经mark成sources root 你自己忘记了, 于是就在命令行也执行python文件,然后就出现 No module named *** 等 相关你认为 ...

  5. python之模块csv之CSV文件的写入(按行写入)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...

  6. Python通过调用windows命令行处理sam文件

    Python通过调用windows命令行处理sam文件 以samtools软件为例 一.下载或者索取得到windows版本的samtools软件,解压后如下: 进入文件内部,有如下几个文件: 二.将s ...

  7. python如何通过windows命令行运行一个python程序文件?

    python如何通过windows命令行运行一个python程序文件? cmd 进入到py文件对应目录下或者直接在上面的文件地址栏输入cmd,敲入回车 定位到对应的目录下 输入python xxx.p ...

  8. shell脚本命令 运行python文件&python命令行运行python代码

    单独的python文件运行的时候 报错: 在shell脚本中,运行shell脚本命令:在Python命令行中,运行Python代码.然而,“python hello.py”是一个脚本命令,不是pyth ...

  9. 如何用python最快的获取大文件的最后几行

    工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断.那么,这种情况下我们应该怎么做呢? 1)常规方法:从前往后依次读取 步骤:open打开日志文件. ...

  10. python 文件单行循环读取的坑(一个程序中,文件默认只能按行循环读取一次,即使写到另一个循环里,它也只读取一次)

    本来写了一个程序,想获取a文件中有,但是b文件中没有的行: 想到的方法是:1.一行一行提取a文件中数据,然后用a文件中的每一行与b文件中的每一行比较, 2.如果找到相同行就继续查找a中的下一行,如果找 ...

随机推荐

  1. OO第三次博客作业

    一.规格化的发展历史 最早的程序设计都是面向机器,从一开始使用的机器语言,到后面的汇编语言,都是面向机器的语言,编写困难也容易出错.随着需求的发展,程序的编写从面向机器走向面向过程,但由于goto语句 ...

  2. SQL 关键字练习

    --1.使用基本查询语句.--(1)查询DEPT表显示所有部门select dname from dept:--(2)查询EMP表显示所有雇员名及其全年收入(月收入=工资+补助),处理NULL行,并指 ...

  3. robot framework + win7 64 上的安装

    1.安装 python 2.7   2.cmd  管理模式 python -m pip install --upgrade pip     pip install robotframework==3. ...

  4. Python 学习笔记4 变量-字符串

    Python中的字符串,我们可以简单的认为是一组用单引号,双引号,三引号包含的一组字符,数字或者特殊字符.在Python3中,所有的字符串都是Unicode字符串. 变量定义 #单引号 string1 ...

  5. JS数组reduce()方法详解及高级技巧

    1.语法 arr.reduce(callback,[initialValue]) reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上 ...

  6. 并查集的Java实现

    Java实现并查集,合并时采用路径压缩算法. 如果合并时使用循环修改的方法,一次合并的时间复杂度就为N,无法接受 public class Union { public int[] id;//对应索引 ...

  7. 汇编-13.0-int指令

    1.int指令 int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程. 执行int n指令,相当于引发一个中断号为n的中断过程. (1).取中断类型码n: (2).标志寄存器入栈,I ...

  8. .net拼接json字符串

    { while (reader.Read()) { if (reader.HasRows) { JSONstring += "{"; JSONstring += "\&q ...

  9. zabbix实现自定义监控

    实现自定义监控项实例 .创建主机组 .创建主机 .创建监控项 .到需要监控的主机的agent中添加自定义的监控项目 cd /etc/zabbix/zabbix_agentd.d vi userpara ...

  10. 解决git pull/push每次都需要输入密码问题 和 HttpRequestException encountered

    如果我们git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁 ...