知行编程网知行编程网  2022-10-04 16:00 知行编程网 隐藏边栏  97 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python如何从文件中读取数据的相关知识,包括c语言怎么从文件中读取数据,以及java中如何读取文件这些编程知识,希望对大家有参考作用。



Python 如何从文件中读取数据



从文件中读取数据


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.相对路径->文件是相对于当前运行程序所在目录的。例如。在程序所在的文件夹C:\Users\yxf\Desktop\python_pycharm中新建一个文件夹text_file,存放文件pi_digits.txt。这时候就需要这样写代码:

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

2.绝对文件路径->文件所在的完整路径。绝对路径比相对路径长,因此将路径存储在变量中并将变量传递给 open():

file_path = r'C:\Users\yxf\Desktop\python_pycharm\text_files\pi_digits.txt'
with open(file_path) as file_object:

由于文件路径中使用了反斜杠,在python中被视为转义字符,所以需要在开始的单引号前加上r。


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循环遍历文件中的每一行,但是运行结果中显示的每一行后面都跟着一个空行,这是为什么呢?文件中每一行的末尾都有一个不可见的换行符,打印语句也添加了一个换行符。要消除这些空行,请在打印语句中使用 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. 圆周率中包含你的生日吗

你可以检测 pi 值的前 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.')

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享