【python】文件处理行与行之间的内容
在处理文本文件时,很多时候需要我们处理跨行的数据,但是用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】文件处理行与行之间的内容的更多相关文章
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
- 如何用python爬取两个span之间的内容
Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...
- 如何编写一个带命令行参数的Python文件
看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...
- 解决命令行运行python文件,出现No module named *** 报错问题
有时候在一个项目中运行的时候,可能是之前已经mark成sources root 你自己忘记了, 于是就在命令行也执行python文件,然后就出现 No module named *** 等 相关你认为 ...
- python之模块csv之CSV文件的写入(按行写入)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...
- Python通过调用windows命令行处理sam文件
Python通过调用windows命令行处理sam文件 以samtools软件为例 一.下载或者索取得到windows版本的samtools软件,解压后如下: 进入文件内部,有如下几个文件: 二.将s ...
- python如何通过windows命令行运行一个python程序文件?
python如何通过windows命令行运行一个python程序文件? cmd 进入到py文件对应目录下或者直接在上面的文件地址栏输入cmd,敲入回车 定位到对应的目录下 输入python xxx.p ...
- shell脚本命令 运行python文件&python命令行运行python代码
单独的python文件运行的时候 报错: 在shell脚本中,运行shell脚本命令:在Python命令行中,运行Python代码.然而,“python hello.py”是一个脚本命令,不是pyth ...
- 如何用python最快的获取大文件的最后几行
工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断.那么,这种情况下我们应该怎么做呢? 1)常规方法:从前往后依次读取 步骤:open打开日志文件. ...
- python 文件单行循环读取的坑(一个程序中,文件默认只能按行循环读取一次,即使写到另一个循环里,它也只读取一次)
本来写了一个程序,想获取a文件中有,但是b文件中没有的行: 想到的方法是:1.一行一行提取a文件中数据,然后用a文件中的每一行与b文件中的每一行比较, 2.如果找到相同行就继续查找a中的下一行,如果找 ...
随机推荐
- cadence分列元件原理图库的设计
- aspose 生成word 简单的文档操作
package aspose.com.word; import com.aspose.words.Document;import com.aspose.words.DocumentBuilder; p ...
- 学习虚拟机时Vbox提示硬件加速不可用时应该怎么办?
也不知大家在安装或使用虚拟机时有没有出现过这样的现象?Vbox提示硬件加速不可用? 在学习Java和安装虚拟机时,自己的电脑上出现Vbox提示Vt-x硬件加速不可用,但后也知道了方法怎么弄! 方法及步 ...
- java_基础_异常
之前只是了解的最基础的异常形式,没有过多的深入 今天因为一些原因了解了一下 下面来说说异常的几种形式 1.try-catch语句块 代码示例 class test{ public static voi ...
- 工作流JBPM
jbpm3 共分为12种节点 1.node节点:如果该节点没有定义ACTION,则流转到该节点时不会停留,会继续往下走,如果定义ACTION,执行完ACTION后会停在该节点上,调用 token.si ...
- 与PON相关的abbreviation
AAL:Asynchronous transfer mode Adaptation Layer 异步传输适配层 ACS:Autoconfiguration Server 自动配置服务 ADSL:Asy ...
- oracle DML语句 事务的定义与特点
1.insert into (插入数据) insert in to 表名(列表1,列表2) values(要插入的数据1,数据2); or insert into 表名 values(数据 ...
- u-boot调试串口输出对应的系统函数
接上Debug串口,启动机器,u-boot哗啦啦地打印一行行的字符.刚接触u-boot的时候,对机器后台做了什么,几乎一无所知. 如果要很有信心地定制出一个简单并且可靠的系统,或者快速完成一项新的任务 ...
- POI导出excel列宽自适应
让单元格宽度随着列和单元格值的宽度自适应: //存储最大列宽 Map<Integer, Integer> maxWidth = new HashMap<>(); // 将列头设 ...
- spring-boot war包
接着上面的spring-boot项目,直接使用jar包方便调试,在开发阶段非常方便,生产上最好打成war形式 要想spring-boot打war包,还是从pom.xml入手 1.1 调整pom.xml ...