读取整个文件

# 案例:读取整个文件

# pi_digits.txt

3.1415926535

8979323846

2643383279

# file_reader.py

with open ('pi_digits.txt') as file_object:

contents = file_object.read()

print(contents)

调用open()打开文件,函数open接受一个参数:要打开文件的名称。

Python在当前执行的文件所在目录中查找指定文件。

函数open()返回一个表示文件的对象,并将这个对象存储到变量file_object中

关键字with在不再需要访问文件后将其关闭

可以调用open()和close()来打开和关闭文件,但,如果程序存在bug,文件将不能正常关闭,导致数据丢失或受损,也可能过早的关闭文件,导致无法访问

该with让python确定,只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。

该输出末尾多了一个空行

因为read()到达问价末尾时返回一个空字符串,而降空字符串显示出来时就是一个空行

要删除多出来的空行,在print()语句中使用rstrip()

print(contents.rstrip())

文件路径

当读取文件.txt与.py程序文件不在同一目录下,需要提供文件路径,它让Python到系统的特定位置中查找

使用相对文件路劲来打开读取文件

其中Linux和OSX中,路径需要斜杠(/)

在Windows中使用反斜杠(\)

# 案例:

# file_find.py(程序文件)

# 程序文件所在位置与Python_work在同一目录下

with open('Python_work\pi_digits.txt') as file_object:

contents = file_object.read()

print(contents.rstrip())

# pi_digits.txt

壮志饥餐胡虏肉,笑谈渴饮匈奴血。

易水萧萧西风冷,满座衣冠似雪。

俱往矣,数风流人物,还看今朝。

想当年,金戈铁马,气吞万里如虎。

天姥连天向天横,势拔五岳掩赤城。

乱石穿空,惊涛拍岸,卷起千堆雪。

我自横刀向天笑,去留肝胆两昆仑。

君不见黄河之水天上来,奔流到海不复回。

生当作人杰,死亦为鬼雄。至今思项羽,不肯过江东。

白日放歌须纵酒,青春作伴好还乡。

长风万里送秋雁,对此可以酣高楼。

长风破浪会有时,直挂云帆济沧海。

马作的卢飞快,弓如霹雳弦惊,了却君王天下事,赢得生前身后名。

此去泉台招旧部,旌旗十万斩阎罗。

可以将文件在计算机中的准确位置告诉Python,这称为绝对文件路径

在Linux和OSX中:’/home/ehmatthes/other_files/text_files/filename.txt’

在windows系统中:C:\Study\Python\Python\Python_work\pi_digits.txt

file_path = 'C:\Study\Python\Python\Python_work\pi_digits.txt'

with open(file_path) as file_object:

contents = file_object.read()

print(contents.rstrip())

逐行读取

检查文件中的每一行,或者以某种方式修改文件中的文本

对文件对象使用for循环

file_path = 'C:\Study\Python\Python\Python_work\pi_digits.txt'

with open(file_path) as file_object:

for line in file_object:

print(line)

运行:

出现空白行原因:

在文件中,每行的末尾都有一个看不见的换行符,print语句会加上一个换行符,因此每行末尾都有两个换行符,一个来自文件,另一个来自print语句,撤销多余的空白行,可在print语句中使用rstrip()

创建一个包含文件各行内容的列表

使用关键字with时,open()返回的文件对象只在with代码块内可用

要在with代码块外访问文件的内容,可在with代码块内将文件存储在一个列表中,并在with代码块外使用该列表

使用方法readlines()从文件中读取每一行,并将其存储在一个列表中

# 案例:

filename = 'pi_digits.txt'

with open(filename) as file_object:

lines = file_object.readlines()

for line in lines:

print(line)

使用文件的内容

将文件读取到内存中后,就可以采用任何方式使用这些数据了

将其中的所有行都存储在一个列表中

创建变量用于存储圆周率的值

使用for循环,将每行都加入到变量中个,并删除末尾的换行符

方法:ristip()删除右边末尾的空格,strip()删除多余的空格

读取文本文件时, Python 将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数 int() 将其转换为整数,或使用函数 float() 将其转换为浮点数。

# 案例:简单的方式使用圆周率的值

# 圆周率值.py

filename = 'pi_digits.txt'

with open(filename) as file_object:

lines = file_object.readlines()

pi_string = ''

for line in lines:

pr_string += line.rstrip()

print(pi_string)

print(len(pi_string))

# 案例:读取整个文件

# pi_digits.txt

3.1415926535

8979323846

2643383279

运行:

包含一百万位的大型文件

无需对程序做任何修改,只需将这个文件传递给程序即可

对于你可处理的数据量, Python 没有任何限制;只要系统的内存足够多,你想处理多少数据都可以。

访问列表使用切片[:]

# 案例:有一个文本文件,其中包含精确到小数点后 1 000 000 位而不是 30 位的圆周率

# 值,也可创建一个包含所有这些数字的字符串,只打印到小数点后 50 位

# pi_string.py

filename = 'pi_million_digits.txt'

with open(filename) as file_object:

lines = file_object.readlines()

pi_string = ''

for line in lines:

pi_string += line.strip()

print(pi_string[:52] + '.....')

print(len(pi_string))

运行:

圆周率值中包含你的生日吗

# 案例:可将生日表示为一个由数字组成的字符串,再检查这个字符串是否包含在 pi_string 中:

#coding=gbk-----该模块中有中文字符,需要添加注释,说明字符

filename = 'pi_million_digits.txt'

with open(filename) as file_object:

lines = file_object.readlines()

pi_string = ''

for line in lines:

pi_string += line.strip()

birthday = ""

while birthday != 'quit':

birthday = input("请输入您的生日:")

if birthday == 'quit':

break

elif birthday in pi_string:

print("你的生日在这个1000000圆周率值中!")

else:

print("你的生日不在圆周率值中!!!")

运行:

练习

# 1.python学习笔记

# 在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的 Python 知识,其中每一行都以 “In Python you can” 打头。将这个文件命名为

# learning_python.txt ,并将其存储到为完成本章练习而编写的程序所在的目录中。编写一个程序,它读取这个文件,并将你所写的内容打印三次:

# 第一次打印时读取整个文件;第二次打印时遍历文件对象;第三次打印时将各行存储在一个列表中,再在 with 代码块外打印它们。

#coding=gbk-----编码为汉字编码字符集

filename = 'learning_python.txt'

print('--' * 80)

print("读取整个文件:")

with open(filename) as file_object:

lines = file_object.read()

print(lines)

print('--' * 80)

print("遍历文件对象:")

with open(filename) as file_object:

print("多余空白原因是:文本文件每行自带看不见的换行符,print函数也有换行功能,所有存在两个换行符")

for line in file_object:

print(line)

with open(filename) as file_object:

print("解决多余空白方法:rstrip()-->行末尾空白删除,strip()-->整行空白删除")

for line in file_object:

print(line.rstrip())

print('--' * 80)

print("存储在一个列表中:")

with open(filename) as file_object:

lines = file_object.readlines()

print(lines)

print('--' * 80)

print("遍历列表中的每一行:")

for line in lines:

print(line.rstrip())

print('--' * 80)

# learning_python.txt

In Python you can store as much information as you want.

In Python you can connect pieces of information.

In Python you can model real-world situations.

In Python you can make a chat

运行:

# 2.C语言学习笔记:

# 可使用方法 replace() 将字符串中的特定单词都替换为另一个单词。下面是一个简单的示例,演示了如何将句子中的 'dog' 替换为 'cat'

message = "I really like dogs."

message.replace('dog', 'cat')

'I really like cats.'

'I really like cats.'

# 读取你刚创建的文件 learning_python.txt 中的每一行,将其中的 Python 都替换为另一门语言的名称,如 C 。将修改后的各行都打印到屏幕上。

# learning_python.txt

In Python you can store as much information as you want.

In Python you can connect pieces of information.

In Python you can model real-world situations.

In Python you can make a chat

# 替换.py

#coding=gbk-----该模块中有中文字符,需要添加注释,说明字符

filename = 'learning_python.txt'

print('--' * 80)

print("读取整个文件:")

with open(filename) as file_object:

lines = file_object.read()

print( lines.replace('Python','C'))

print('--' * 80)

print("遍历文件对象:")

with open(filename) as file_object:

print("多余空白原因是:文本文件每行自带看不见的换行符,print函数也有换行功能,所有存在两个换行符")

for line in file_object:

print(line.replace('Python', 'C'))

with open(filename) as file_object:

print("解决多余空白方法:rstrip()-->行末尾空白删除,strip()-->整行空白删除")

for line in file_object:

print(line.replace('Python', 'C').rstrip())

print('--' * 80)

print("存储在一个列表中,遍历列表中每一行:")

with open(filename) as file_object:

lines = file_object.readlines()

for line in lines:

print(line.replace('Python', 'C').rstrip())

print('--' * 80)

运行:

python从文件中读取数据时出现错误_Python 从文件中读取数据相关推荐

  1. python逐行读取数据时出现错误_python如何逐行读取数据

    在实际开发的过程中,文件读写也很重要,下面说一下python如何逐行读取文件. 如果程序要读取行,通常只能用文本方式来读取,道理很简单,只有文本文件才有行的概念,二进制文件没有所谓行的概念. 文件对象 ...

  2. python逐行读取数据时出现错误_Python利用逐行读取readline()打印出现空行的解决办法...

    Python Python开发 Python语言 Python利用逐行读取readline()打印出现空行的解决办法 在利用readline()进行逐行读取文件的时候,我们一般使用以下程序: f=op ...

  3. python存储和读取数据时出现错误_python读取json文件存sql及codecs读取大文件问题...

    preface: 最近帮师兄处理json文件,需要读到数据库里面,以备其后续从数据库读取数据.数据是关于yelp网站里面的: https://github.com/Yelp/dataset-examp ...

  4. python如何读取数据时出现错误_在python3中,关于redis读取数据带有‘b’的问题...

    在python3中,关于redis读取数据带有'b'的问题 #encoding=utf-8 from redis import * #读取数据 d1=input("您输入的数据是:" ...

  5. python函数式编程读取数据时出现错误_Python编程中,函数遇到问题是抛出错误好还是约定返回值好?...

    这其实是一个编码规范的问题,没有任何场景都适用的解决方案,就好比有了 list,但是还是需要 tuple,所以对于抛出异常好,还是返回值好,是需要具体情况看的. 在 C 语言中,通用的做法是函数返回一 ...

  6. python如何读取数据时出现错误_python读取excel数据报xlrd.biffh.XLRDError错误原因,,比如说我要读取 http...

    python读取excel数据报xlrd.biffh.XLRDError错误原因,,比如说我要读取 http 比如说我要读取 http://basic.10jqka.com.cn/600383/xls ...

  7. 在sql2005中加数据库时出现无法打开物理文件

    在sql2005中附加数据库时出现无法打开物理文件 "F:\ajax\test.mdf".操作系统错误 5:"5(拒绝访问.)"解决办法 出现该问题是由于用混合 ...

  8. arcade 读取地图信息时:错误: ‘gbk‘ codec can‘t decode byte 0x91 in position 314: illegal multibyte sequence

    arcade 读取地图信息时:错误: 'gbk' codec can't decode byte 0x91 in position 314: illegal multibyte sequence E: ...

  9. mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...

    快速解决mysql导数据时,格式不对.导入慢.丢数据的问题 如果希望一劳永逸的解决慢的问题,不妨把你的mysql升级到mysql8.0吧,mysql8.0默认的字符集已经从latin1改为utf8mb ...

最新文章

  1. ROS编程: 一些Tips
  2. 比特币早期投资家:没有人能够阻止其发展 TechWeb 09-27 09:10 凤凰科技讯 据CNBC网站北京时间9月27日报道,风险投资家、“Social+Capital”基金创始人Chamath
  3. 【人物】互联网教父KK:对未来要有自信,未来是我们的
  4. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值”的求解思路与算法示例
  5. POJ - 3683 Priest John's Busiest Day(2-SAT+路径打印)
  6. oracle确实表达式,ORACLE正规表达式
  7. python Exception(异常处理)
  8. STM32工作笔记0084---UCOSIII软件定时器
  9. 网店如何提高顾客的回购率?
  10. mysql 批量数据循环插入
  11. jdbc mysql分层_JDBC和数据库访问层
  12. 基于Matlab的极限学习机(ELM)实现
  13. linux用vi编辑后保存退出命令是什么,linux vi保存退出命令
  14. 二元函数的洛必达法则
  15. 学习笔记1-【计算机组成原理】-【计算机科学速成课】[40集全/精校] - Crash Course Computer Science
  16. 火狐浏览器 Mozilla Firefox v36.0.3 便携增强版
  17. 什么是不简单?把每一件简单的事做好就是不简单;什么是不平凡?能把每一件平凡的事做好就是不平凡。
  18. VS2019登陆时脚本错误
  19. cookie中__jsl_clearance参数的破解。
  20. Python基础---输入和输出

热门文章

  1. 如何解决choregraphe由于VCOMP120.DLL丢失而导致的闪退问题
  2. 【报错解决】matlab报错:缺少动态链接库VCOMP100.DLL
  3. LeetCode-036-有效的数独
  4. Go Hack 17:Killy 日记
  5. 一篇完整的 Scss 学习指南,看这篇就够啦
  6. Revit开发 - “附加模块”中添加“外部工具”
  7. 将可穿戴设备打造成随身专业心电“监护仪”
  8. 第三篇:手把手教你移植任天堂,没有声音、无需外置SD卡、可使用独立按键也可使用外置手柄,本人使用的芯片为ESP32,移植到STM32均可使用。(本篇主要介绍ppu.c文件,即教你如何移植屏幕)
  9. 在OpenCV里实现限制对比度的直方图均衡化
  10. PTA-输出倒三角图案