python2.7读取txt文件,python读取txt文件
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
1.读文件
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
f = open('test.txt', 'r')
标示符'r'表示以只读方式打开文件,这样,我们就成功地打开了一个文件。
如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在
如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:
f.read()
最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:
f.close()
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:
try:
f = open('test.txt', 'r')
print(f.read())
finally:
if f:
f.close()
但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:
with open('test.txt', 'r') as f:
print(f.read())
这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。
python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。
read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件有10G,内存就爆了,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
readlines() 一次读取整个文件并返回list,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。
readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
注意:这三种方法是把每行末尾的'\n'也读进来了,它并不会默认的把'\n'去掉,需要我们手动去掉。
with open('test.txt', 'r') as f:
print(f.readlines())
去掉'\n'
with open('test.txt', 'r') as f:
list = f.readlines()
for i in range(0, len(list)):
#rstrip() 删除 string 字符串末尾的指定字符(默认为空格)
list[i] = list[i].rstrip('\n')
print(list)
关于open()的mode参数:
r':读
'w':写
'a':追加
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建)
'a+' ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'
例子:
文件格式如下:
20200902 318516220 219740191 202442598 145346084 525567573 367242618 286306137 192043867 334783321430 221143426700 160455962436 94602339494 433776177276 301239190208 204832110249 120639938104 -249591318637
20200903 223312188 199410993 178719377 152127174 341225007 281349829 250664639 186214027 231780516957 199556114436 144084298648 100417175597 293348257021 241912577341 179113193617 116545293491 -156289060416
20200904 232393823 185595779 191135633 170489180 320735346 203114740 188915495 147991632 186928489504 163257126820 143409004929 109248071467 252977430459 175582715437 144615333670 97767150603 -68574891049
20200907 268545057 210126606 175338439 160350584 282467031 256370214 209320202 166267010 244222191516 208504707046 140276526820 104468907865 237108717183 229211911056 161352502634 106400173585 -36738709111
split() 通过指定分隔符对字符串进行分割,返回值为分割后的字符串列表
float() 函数用于将整数和字符串转换成浮点数
int() 函数用于将一个字符串或数字转换为整型
def MakeVol (fVal):
strVal = '---'
strWan = '万'
strYi = '亿'
NUM_WAM = 10000
NUM_YI = 100000000
NUM_WAN_YI = 1000000000000
if abs(fVal) < NUM_WAM:
strVal = '{:.2f}'.format(fVal)
elif abs(fVal) < NUM_YI:
strVal = '{:.2f}{}'.format(fVal / NUM_WAM, strWan)
elif abs(fVal) < NUM_WAN_YI:
strVal = '{:.2f}{}'.format(fVal / NUM_YI, strYi)
else:
strVal = '{:.2f}{}{}'.format(fVal / NUM_WAN_YI, strWan, strYi)
print(strVal)
#时间 特大买单成交量(股) 大买单成交量(股) 中买单成交量(股) 小买单成交量(股)特大卖单成交量(股) 大卖单成交量(股) 中卖单成交量(股) 小卖单成交量(股) 特大买单成交金额(*100) 大买单成交金额(*100) 中买单成交金额(*100) 小买单成交金额(*100)特大卖单成交金额(*100) 大卖单成交金额(*100)中卖单成交金额(*100) 小卖单成交金额(*100) 资金净流入(*100)
#一、解析文件并将数据加载到内存中
#1.读取文件到mfList中
with open('stat_day_800881126.txt', 'r') as file:
mfList = file.readlines()
#2.对文件进行解析,并将数据放入mfDict中
#key:日期 value:list[[0,1,2,3,4,5],[0,1,2,3,4,5]] list[0]主力资金列表:1 2 3 5 10 20日资金数据,list[1]资金列表。
mfDict = {}
for i in range(0, len(mfList)):
#去掉每行中的换行符\n
mfList[i] = mfList[i].rstrip('\n')
#对每行中的数据根据\t分割后放入mfListItem List中,并将其替换到mfList中
mfListItem = mfList[i].split('\t')
mfList[i] = mfListItem
#mfListItem的首个字段是日期
strDate = mfListItem[0]
dayNumMfList = []
dayNumMainMfItemList = []
dayNumMfItemList = []
dayNum = 0
NetInflowSum = 0.0
MainNetInflowSum = 0.0
while dayNum < 20:
if (i - dayNum) >= 0:
dateMf = mfList[i - dayNum]
MainNetInflow = 0.0
NetInflow = 0.0
#主力资金净流入
MainNetInflow = (float(dateMf[9]) + float(dateMf[10]) - float(dateMf[13]) - float(dateMf[14]))/100
#资金净流入
NetInflow = (float(dateMf[9]) + float(dateMf[10]) + float(dateMf[11]) + float(dateMf[12]) - float(dateMf[13]) - float(dateMf[14]) - float(dateMf[15]) - float(dateMf[16]))/100
#dayNum+1日主力资金净流入
MainNetInflowSum = MainNetInflowSum + MainNetInflow
#dayNum+1日资金净流入
NetInflowSum = NetInflowSum + NetInflow
if (dayNum + 1) in [1, 2, 3, 5, 10, 20]:
dayNumMainMfItemList.append(MainNetInflowSum)
dayNumMfItemList.append(NetInflowSum)
dayNum = dayNum + 1
dayNumMfList.append(dayNumMainMfItemList)
dayNumMfList.append(dayNumMfItemList)
mfDict[strDate] = dayNumMfList
print(mfDict)
#二、从内存中查找所需数据
dayNumDic = {'1': 0, '2': 1, '3': 2, '5': 3, '10': 4, '20': 5}
while (1):
strInput = input('input:"date,dayNum(1,2,3,5,10,20),type(1:block,2:stock)",exmple:"20210113,20,1" input 0 to exit:\n')
if(strInput == '0'):
break
strList = strInput.split(',')
if strList.__len__() < 3:
print('invalid input!')
continue
#日期
date = strList[0]
#n日资金数据
mfDayNum = strList[1]
#type=1,板块数据;type=2,个股数据。
type = strList[2]
if (type in ['1', '2']) and (mfDayNum in ['1', '2', '3', '5', '10', '20']):
if mfDict.__contains__(date):
nNetInflow = 0.0
dateMfData = mfDict[date][int(type) - 1]
print(dateMfData)
if len(dateMfData) > dayNumDic[mfDayNum]:
nNetInflow = dateMfData[dayNumDic[mfDayNum]]
print("net_inflow:", nNetInflow)
MakeVol(nNetInflow)
else:
print('no data')
else:
print("not find this date.")
else:
print("invalid input")
参考:
https://www.cnblogs.com/zywscq/p/5441145.html python文件读写小结
https://www.liaoxuefeng.com/wiki/1016959663602400/1017607179232640 文件读写
python2.7读取txt文件,python读取txt文件相关推荐
- python读取excel表格-python读取excel表格中的数据
使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...
- python如何读取中文文件-python读取中文txt文本的方法
对于python2.7 字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unico ...
- python打开一个文件夹下所有txt文件-python读取一个目录下所有txt里面的内容方法...
实例如下所示: import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文 ...
- python读取整个txt文件-Python读写txt文本文件
一.文件的打开和创建 1 2 3 4 5 >>> f= open('/tmp/test.txt') >>> f.read() 'hello python! hell ...
- python 打开当前目录的txt文件-Python - 读取其他文件夹/目录中的文本文件
这是我的情况:我有一些.txt文件在我可以运行脚本的不同目录中.Python - 读取其他文件夹/目录中的文本文件 mainDir/ -face/ -57268-face-_tracker.txt - ...
- python读取指定路径txt文件-python读取txt文件并取其某一列数据的示例
菜鸟笔记 首先读取的txt文件如下: AAAAF110 0003E818 0003E1FC 0003E770 0003FFFC 90 AAAAF110 0003E824 0003E208 0003E7 ...
- Python pandas 读取csv/txt数据文件 python读取csv/txt文件
导读 主要利用pandas.read_csv接口对csv格式文件或txt文件进行读取,由于CSV格式文件使用非常频繁,功能强大,参数众多,因此在这里专门做详细介绍 使用示例 # 基础用法 import ...
- python读取中文txt文本-python读取中文txt文本的方法
对于python2.7 字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unico ...
- python读取txt数据-python读取文本文件数据
本文要点刚要: (一)读文本文件格式的数据函数:read_csv,read_table 1.读不同分隔符的文本文件,用参数sep 2.读无字段名(表头)的文本文件 ,用参数names 3.为文本文件制 ...
最新文章
- 专访思必驰初敏:离开微软、放弃阿里,一个语音交互的“实用主义者”
- php header setcookie,php中header头设置Cookie与内置setCookie的区别,和js对cookie操作
- ansible调用callbacks插件 保存执行结果
- MySQL installer
- linux 文件夹换所属用户,Linux中账号管理之权限管理(下)
- 在Websphere 8.0上安装Liferay 6.2 Enterprise Edition
- 移动互联网广告 - 第十更 - 广告投放运营 DashBoard - 2016/12/10
- java基础-02数据类型
- 基于Session的认证方式_认证流程_Spring Security OAuth2.0认证授权---springcloud工作笔记114
- bzoj 1297: [SCOI2009]迷路(矩阵快速幂)
- h264编解码器知识点
- laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
- ssh远程连接虚拟机
- Rigify:关于Rigify生成最终绑定时失败的原因及解决办法
- 利用Lightroom添加边框及批量导出
- 极简数据抓取教程:山水济南,Say I love you with data
- js调用html打印去掉页眉页脚,js 客户端打印html 并且去掉页眉、页脚的实例
- html5压缩视频文件大小,格式工厂怎么压缩视频大小 只需5步大视频变小视频
- 图像极坐标变换的研究
- 下载安装Java运行环境