Python——文件读取
我们经常需要从文件中读取数据,因此学会文件的读取很重要,下面来介绍一下文件的读取工作:
1.读取整个文件
pi_digits.text
3.1415926535
8979323846
2643383279
单纯的读取一个文件,我们首先要打开文件,然后读取里面的内容,使用read()方法,读取文件的全部内容,然后把读取出来的内容进行赋给一个变量;如下所示:
file_reader.py
with open('pi_digits.text') as file_object:
contents = file_object.read()
print(type(contents))
print(contents)
输出结果如下:
3.1415926535
8979323846
2643383279
<class 'str'>
还有一种方法读取文件,我们来看看,直接打开然后进行读取,不使用with语句:
f = open('pi_digits.text')
contents = f.read()
print(contents)
f.close()
这种方法直接读取文件,但是要记得关闭文件,我们要知道,我们操作的是什么,目的是什么,如果我们只是单纯的读取文件的内容,而不去修改它,那么就单纯使用open()方法,不用第二参数即可:
第一种方法中,with open('pi_digits.text') as file_object:做了大量的工作。我们先来看看open()。要以任何方式使用文件——哪怕仅仅打印其内容,都得先打开文件,这样才能够访问它,而且第一种方法读取之后,赋给变量contents,变量contents是一个字符串,不是列表,也不是元祖之类的,而只是单纯的字符串情况;第二种方法必须记得关闭文件。
文件的相对路径和绝对路径
这两种方法的区别:with在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close();我们也可以调用open()和close()来打开和关闭文件(第二种方法),但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),我们会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。并非任何情况下都能轻松地确定文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:我们只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
所以这两种方法都是可以的,只是with打开的方式更安全一些,不需要我们去确定什么时候关闭文件,而open()直接打开的话就需要我们自己去确定什么时候要关闭文件,要使用close()方法关闭文件。
2.逐行读取
f = open("pi_digits.text")
for line in f:
print(line.strip())
f.close()
我们使用open()和close()方式打开文件,这种情况下,我们一定要记得关闭文件,以免文件遭到破坏,我们打开文件,
也可以使用with语句打开文件,这种方法让我们避免使用close()语句,系统会自动帮助我们在合适的时机关闭文件,也不用担心异常的问题。
with open('pi_digits.text') as f:
for line in f:
print(line)
我们使用with语句打开这个文件,并命名为f,然后遍历这个打开的文件,输出每一行。这样我们就可以实现按行读取的方法。
3.把文件读取到一个列表中
with open('pi_digits.text') as f:
lines = f.readlines()
print(lines)
把文件读取到一个列表中,readlines()方法是从文件中读取每一行,并将其存储到一个列表中;接下来,该列表被存储到变量lines中;读取文件得到一个列表的方法,我们读取这个文件,并且得到一个列表
f = open("pi_digits.text")
lines = f.readlines()
print(lines)
f.close()
我们在直接使用open()打开文件的时候,一定要记得关闭文件,使用close()方法把文件关闭,这点可能经常会一不小心忘记,只记得打开文件,但是没有关闭文件。
二、写入文件
保存数据的最简单的方式之一是将其写入到文件中。
write_message.py
with open('programming.text','w') as f:
f.write("I love programming")
在这个示例中,调用open()时提供了两个实参。第一个实参也是要打开的文件的名称;第二个实参("w")告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或者让我们能够读取和写入文件的模式('r+').如果我们省略了模式实参,Python将以默认的只读模式打开文件。
读取和写入文件有两种方法,一种是with语句打开文件;另一种是open()和close()结合使用打开和读取文件。
我们要知道我们打开文件是做什么如果只是单纯的打开和读取文件,只需要open()即可;要是写入的话,就需要指定第二参数。默认省略参数的情况下是只读模式的。
写入的方式
(1)写入模式('r')
(2)附加模式('a')
with open("pi_digits.text",'a') as f:
f.write("I love you,too,Really\n")
f.write("I also love finding meanting in large datasets.\n")
f.write("I love to start to make success.")
写入模式('r')和附加模式('a')都是向文件中写入内容,不同的是写入模式要覆盖之前文件里面的内容。
如果我们要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python
将在返回文件对象前清空该文件。所以使用写入模式('w')的时候一定要小心。
Python——文件读取的更多相关文章
- python文件读取和写入案例
python文件读取和写入案例 直接上代码吧 都是说明 百度上找了很多,最终得出思路 没有直接可以读取修改的扩展,只能先读取,然后复制一份,然后在复制出来的文件里面追加保存 然后删除读的那个,但是缺 ...
- Python文件读取和数据处理
一.python文件读取 1.基本操作 读取文件信息时要注意文件编码,文件编码有UFT-8.ASCII或UTF-16等. 不过在python中最为常用的是UTF-8,所以如果不特别说明就默认UTF-8 ...
- Python 文件读取
1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = file ...
- python文件读取
1.如何将一个“lessons.txt”文档一行行输出? myfile = file(‘lessons.txt’) for f in myfile.readlines(): print f myfil ...
- Python文件读取编码错误问题解决之(PyCharm开发工具默认设置的坑。。。)
刚接触Python学习,正准备做个爬虫的例子,谁知道代码一开始就遇到了一个大坑,狂汗啊. 问题是这样的:我通过代码爬取了博客园首页的HTML代码并存入到blog.txt文件当中,然后准备读取出来之后进 ...
- Python文件读取常用方法
1. 关于读取文件 f.read() 读取文件中所有内容 f.readline() 读取第一行的内容 f.readlines() 读取文件里面所有内容,把每行的内容放到一个list里面 注:因为文件指 ...
- 初识python 文件读取 保存
上一章最后一题的答案:infors.sort(key=lambda x:x['age'])print(infors)--->[{'name': 'laowang', 'age': 23}, {' ...
- python --文件读取数据
读取整个文件: 首先创建一个文件,例如我创建了一个t x t文件了. 然后我想读取这个文件了,我首先将上面的这个文件保存在我即将要创建的Python的文件目录下, 即读取文件成功. 解析: 函数ope ...
- 超级基础的python文件读取
读取文件的两种方式: 1.使用os的open函数: import sys,os r=open("data1.txt","r+") fr=r.readlines( ...
随机推荐
- Python——Twisted框架(网络通信)
一.简介 twisted是一个封装好的网络通信的库,可以帮助我们快速进行网络编程.注意,python3中,字符串必须转码成utf8的格式,否则无法发送.比如str("test"). ...
- 数据降维之多维缩放MDS(Multiple Dimensional Scaling)
网上看到关于数据降维的文章不少,介绍MDS的却极少,遂决定写一写. 考虑一个这样的问题.我们有n个样本,每个样本维度为m.我们的目标是用不同的新的k维向量(k<<m)替代原来的n个m维向量 ...
- Codechef April Challenge 2019 Division 2
Maximum Remaining 题意:给n个数,取出两个数$a_{i}$,$a_{j}$,求$a_{i}\% a_{j}$取模的最大值 直接排个序,第二大(严格的第二大)模第一大就是答案了. #i ...
- [LOJ2310][APIO2017]斑斓之地——可持久化线段树
题目链接: [APIO2017]斑斓之地 将不是河流的格子染成白色,是河流的格子染成黑色,那么连通块数就是白色格子数$-1*2$的联通白色格子数$-2*1$的联通白色格子数$+2*2$的联通白色格子数 ...
- PHP——模糊匹配文件|目录
内置函数 glob函数 详解 http://www.w3school.com.cn/php/func_filesystem_glob.asp
- Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线
排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战.今天借这篇文章,跟大家分析一例这样的问题.排查过程中,需要理解一些自己完全陌生的组件,比如systemd和dbus. ...
- consul命令记录
服务端启动脚本 #/bin/bash! echo "********************************************************************* ...
- ZooKeeper 概述
ZooKeeper:分布式应用程序的分布式协调服务 ZooKeeper:是用于分布式应用程序的分布式开源协调服务 可以简单理解:ZooKeeper = 文件系统 + 通知机制 从设计模式角度理解:Zo ...
- DirectX11 With Windows SDK--18 使用DirectXCollision库进行碰撞检测
前言 在DirectX SDK中,碰撞检测的相关函数位于xnacollision.h中.但是现在,前面所实现的相关函数都已经转移到Windows SDK的DirectXCollision.h中,并且处 ...
- 第二节:如何正确使用WebApi和使用过程中的一些坑
一. 基本调用规则 1. 前提 WebApi的默认路由规则为:routeTemplate: "api/{controller}/{id}", 下面为我们统一将它改为 routeTe ...