读取整个文件

# 案例:读取整个文件
# pi_digits.txt
3.141592653589793238462643383279
# 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.141592653589793238462643383279

运行:

包含一百万位的大型文件

  • 无需对程序做任何修改,只需将这个文件传递给程序即可
  • 对于你可处理的数据量, 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':breakelif 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 从文件中读取数据相关推荐

  1. python 从同花顺获取数据导出,通达信PYTHON读取本地数据,如何使用python在文件中读取数据?...

    Q1:如何使用python在文件中读取数据? file = open('a','r').readlines()[1] Q2:python怎么将本地一个文件夹的所有文本读进内存中 列出文件,把各个文件打 ...

  2. python从文件中读取数据_【Python】从文件中读取数据

    从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 ...

  3. python 从文件中读取数据,同时去除掉空格和换行

    从文件中读取数据,同时去除掉空格和换行,代码如下 import numpy as np def sort(path):w = open(path,'r')l = w.readlines()col=[] ...

  4. python从文件中读取数据时出现错误_Python 从文件中读取数据

    读取整个文件 # 案例:读取整个文件 # pi_digits.txt 3.1415926535 8979323846 2643383279 # file_reader.py with open ('p ...

  5. python从文件中读取数据_Python3 中把txt数据文件读入到矩阵中的方法

    下面为大家分享一篇Python3 中把txt数据文件读入到矩阵中的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 1.实例程序: ''' 数据文件:2.txt内容:(以空格分开每个数据) ...

  6. python文件读取数据-Python从文件中读取数据

    一.读取整个文件内容 在读取文件之前,我们先创建一个文本文件resource.txt作为源文件. resource.txt my name isjoker, I am18years old, How ...

  7. python中读取文件内容-Python从文件中读取数据(2)

    一.读取文件中各行的内容并存储到一个列表中 继续用resource.txt 举例 resource.txt my name isjoker, I am18years old, How about yo ...

  8. python读取txt数据-Python从文件中读取数据

    一.读取整个文件内容 在读取文件之前,我们先创建一个文本文件resource.txt作为源文件. resource.txt my name isjoker, I am18years old, How ...

  9. python从文件中读取数据时出现错误_python-从文件中读取数据

    一.读取整个文件 learnFile.py 绝对路径 #coding=UTF-8 importsys reload(sys) with open(r'C:\Users\zhujiachun\Deskt ...

最新文章

  1. 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?
  2. 自定义View 中很关键的问题View获取宽/高是0 的解决办法
  3. 图解 Java 常用数据结构
  4. mac os 开启FTP Server
  5. 这个严重漏洞可被滥用于破坏交通信号灯系统
  6. 影视.20190507
  7. CCS7.0从安装到使用
  8. Rhythmbox中mp3中文乱码解决
  9. UVA 12307 Smallest Enclosing Rectangle(旋转卡壳)
  10. 为什么使用start方法启动Java的Thread线程?
  11. assoc php,PHP array_uintersect_assoc 函数
  12. 计算机工程系的文化是什么,计算机工程系科技文化节.doc
  13. 使用JLink SEGGER_RTT_printf()函数实现打印浮点数
  14. Kindle Fire v6.3 root 教程
  15. 禁闭岛》剧情全解,结局只有一个,导演小细节处...
  16. Qt 实现带阴影 无边框的QMessageBox
  17. RED5 1.0视频直播服务器 WINDOWS安装记录 教程
  18. C语言指针难吗?纸老虎而已,纯干货讲解
  19. siwave 2020R2 软件铜箔粗糙度重大升级更新!
  20. 移动端video标签适配

热门文章

  1. Yesterday once more)《昨日重现》中英文歌词对照
  2. 204. 表达整数的奇怪方式(exgcd,,,数学推导,借助中国剩余定理)
  3. 实体零售,为什么干不过电商?
  4. JAVA 夏令营_2019夏令营游记
  5. vSAN 报警处理:虚拟机的放置和可用性状态不可访问
  6. 为什么总感觉团队工作效率不高?如何提高工作效率?
  7. 关于计算机科学家理想的作文,我的理想作文是科学家
  8. 中国5000年的婚姻搭配规律
  9. Raspberry pi,一个好玩的派 第四季 NOOBS
  10. Linux 文件权限