Python如何从文件中读取数据
【摘要】从文件中读取数据1 读取整个文件要读取文件,首先来创建一个文件:然后打开并读取这个文件,再将其内容显示到屏幕上:file_reader py wit
从文件中读取数据
1. 读取整个文件
要读取文件,首先来创建一个文件:
然后打开并读取这个文件,再将其内容显示到屏幕上:
file_reader.py
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
解读上述代码:
open( ) -> 要以任何方式使用文件,都首先得打开文件,这样才能访问它,此时就需要用到函数open(),该函数只接受一个参数:要打开文件的名称,同时返回表示文件的对象。
with: 不再需要访问文件后调用 close( ) 将其关闭。
read( ) ->读取文件中的全部内容。
运行结果:
3.1415926535
8979323946
2643383278
2. 文件路径
要让python打开不与程序文件位于同一目录中的文件,需要提供文件路径,让python到系统的特定位置去查找。
文件路径的表示:
1. 相对路径 -> 文件相对于当前运行程序所在的目录。eg. 在程序所在文件夹C:UsersyxfDesktoppython_pycharm新建一个文件夹text_file用于存储文件pi_digits.txt,此时就需要这样编写代码:
with open('text_filespi_digits.txt') as file_object:
2. 绝对文件路径 -> 文件所在完整路径。绝对路径比相对路径更长,故可将路径存储在一个变量中,再将变量传递给 open( ):
file_path = r'C:UsersyxfDesktoppython_pycharmtext_filespi_digits.txt'
with open(file_path) as file_object:
由于文件路径中使用的是反斜杠,在python中被视为转义字符,故需要在开头的单引号前加上r。
相关推荐:《Python视频教程》
3. 逐行读取
每次以一行的方式检查文件:
file_name = 'pi_digits.txt'
with open(file_name) as file_object:
for line in file_object:
print(line)
运行结果:
3.1415926535
8979323946
2643383278
通过对文件对象使用for循环来遍历文件中的每一行,但运行结果显示的每一行后边多了空白行,这是为什么呢?文件中每行的末尾都有一个看不见的换行符,而print语句也会加上一个换行符。为消除这些空白行,可在print语句中使用 rstrip( ):
print(line.rstrip())
这样输出与文件内容就完全相同了。
4. 创建一个包含文件各行内容的列表
file_name = 'pi_digits.txt'
with open(file_name) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
方法readlines():从文件中读取每一行,并将其存储在列表中。
5. 使用文件的内容
file_name = 'pi_digits.txt'
with open(file_name) as file_object:
lines = file_object.readlines() # 将文件内容存储在列表中
pi_string = '' # 新建一个空字符串
for line in lines:
pi_string = pi_string + line.rstrip() # 删除空白行并转换为字符串
print(pi_string) # 打印字符串
print(len(pi_string)) # 打印字符串长度
运行结果:
3.1415926535 8979323946 2643383278
36
运行结果中包含了位于每行左边的空格,为删除这些空格,可使用 strip() 而不是 rstrip(),运行可得:
3.141592653589793239462643383278
32
6. 包含一百万位的大型数据
一百万位的文件下载过慢,就复制使用了其中的一小部分,并打印到小数点后的50位:
file_name = 'pi_xx_digits.txt'
with open(file_name) as file_object:
lines = file_object.readlines() # 将文件内容存储在列表中
pi_string = '' # 新建一个空字符串
for line in lines:
pi_string = pi_string + line.strip() # 删除空白行并转换为字符串
print(pi_string[: 52]) # 打印字符串
print(len(pi_string)) # 打印字符串长度
运行结果:
3.14159265358979323846264338327950288419716939937510
1483
由运行结果可知保存了小数点后的1481位在文件 pi_xx_digits.txt 中。
7. 圆周率中包含你的生日吗
可以检测圆周率值的前1483位中是否包含自己的生日:
file_name = 'pi_xx_digits.txt'
with open(file_name) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string = pi_string + line.strip()
birthday = input('Enter your birthday, in the form mmddyy: ')
if birthday in pi_string:
print('Your birthday appears in the first 1483 digits of pi!')
else:
print('Your birthday does not appears in the first 1483 digits of pi.')
就业培训申请领取
环球青藤
官方QQ群扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群
刷题看课 APP下载
免费直播 一键购课
代报名等人工服务