读取整个文件

# 案例:读取整个文件
# 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. 【Chocolatey】安装python3
  2. Java链接MySQL练习题:格式化日期、性别;避免代码注入
  3. php 即时到账,paypal即时到账php实现代码
  4. java生成随机十位数_随机10位字符串生成
  5. python 线性规划问题_使用Python进行线性规划示例
  6. linux安装rabbitmq过程,Linux安装RabbitMQ
  7. 三星老手机com.android,你认识几个?细数三星最经典的手机
  8. Talk预告 | 港科大(广州)助理教授王泽宇: 提升数字内容创作中的创意实现与迭代过程
  9. CSS3实现DIV圆角完整代码
  10. matlab自由曲面体积,一种基于自由曲面的LED准直透镜设计
  11. (四)SGE 常用命令
  12. 华为机试(Python)真题Od【A卷+B卷】
  13. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 问第一个人,他说是10岁。请问第
  14. 计算机键盘分为哪5个区,计算机键盘分区之功能键区
  15. JavaSE入门0基础笔记 第二章Java基础语法
  16. Josh 的学习笔记之数字通信(Part 4——带通调制和解调)
  17. kali破解Wi-Fi密码
  18. java里getter和setter的作用和区别是什么?
  19. Mac系统怎么升级到macOS Catalina 10.15 beta版
  20. C语言算法之将十进制数转换成二进制数

热门文章

  1. E+H差压变送器FMD78-HBA7F21B51AQ
  2. JS判断字符串是否为json字符串
  3. 中国亚硝酸钠(案例7632-00-0)行业市场供需与战略研究报告
  4. 超实用的JS常用算法详解(推荐)
  5. println 和print 的区别
  6. 检查服务器的系统类型,查看服务器的操作系统类型
  7. 4核处理器_CPU后面带F是什么意思?Intel处理器后面带“F”的含义
  8. 什么是事件冒泡,它是如何工作的?如何阻止事件冒泡?
  9. c语言中ceilf函数,Function definitions(函数声明)
  10. js分割字符串并拿到值,js截取字符串