我的python学习笔记、从文件中读取数据

来源:互联网 发布:过滤器返回json 编辑:程序博客网 时间:2024/05/23 17:46

1、读取整个文件

1)使用函数open()打开文件,函数open()接收一个参数:要打开文件的名称。python在当前执行的文件所在的目录查找指定文件。
函数open()返回一个表示文件的对象。使用方法如下:

with open("data.txt") as file_object

2)python将这个对象存储在我们将在后面使用的变量中。

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

也可以使用open和close来打开和关闭文件,但这样做时,如果程序出现bug,导致close语句未执行,文件将不会关闭,这看起来微不足道,但是未妥善的关闭文件可能导致数据丢失或受损。但通过with结构可让python去确定,你只管打开文件,并在需要时使用它,python自会在合适的时候将其自动关闭。

4)使用read函数读取文件的全部内容,使用方法如下:
contents=file_object.read()
但是read到达文件末尾时返回一个空字符串,而将这个空字符串显示出来就是一个空行。要删除末尾的空行,可在print语句中使用rstrip()--python使用rstrip()删除字符串末尾的空白。

实例:

#data.txt
3.1415926535
  8979323846
  2643383279

#file_reader.py
with open("data.txt") as file_object:
     contents=file_object.read()
     print(contents)

输出为:

D:\www>python file_reader.py
3.1415926535
  8979323846
  2643383279

2、文件路径

有时需要打开不在程序文件所属目录中的文件,这时可采用相对路径或绝对路径来打开文件。

在windows中,文件路径中使用反斜杠(\)而不是斜杠(/)
由于反斜杠在python中被视为转义标记,为在windows中确保万无一失,应以原始字符串的方式指定

3、逐行读取

可通过对文件对象执行循环来遍历文件中的每一行

#file_reader.py
with open("D:\data.txt") as file_object:
     for line in file_object:
         print(line)

输出为:

D:\www>python file_reader.py
#data.txt

3.1415926535

  8979323846

  2643383279

我们打印每一行时,发现空白行更多了,因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加上一个换行符,因此每行的末尾都有两个换行符:一个来自文件,另一个来自print语句。要删除这些多余的空白行,可在每条print语句后面使用rstrip():

#file_reader.py
with open("D:\data.txt") as file_object:
     for line in file_object:
         print(line.rstrip())

输出为:

D:\www>python file_reader.py
#data.txt
3.1415926535
  8979323846
  2643383279

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

使用关键字with时,open返回的文件对象,只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表。

方法readlines()从文件中读取每一行,并将其存储在一个列表lines中。由于列表lines的每个元素都对应于文件中的一行,因此输出与文件内容完全一致。

#file_reader.py
with open("D:\data.txt") as file_object:
     lines=file_object.readlines()
for line in lines:
    print(line.rstrip())

输出为:

D:\www>python file_reader.py
#data.txt
3.1415926535
  8979323846
  2643383279

5、使用文件的内容

#file_reader.py
with open("D:\data.txt") as file_object:
     lines=file_object.readlines()
pi_string=''
for line in lines:
    pi_string+=line.rstrip()
print(pi_string)
print(len(pi_string))


输出为:

D:\www>python file_reader.py
#data.txt3.1415926535  8979323846  2643383279
45

在变量pi_string存储的字符串中,包含原来位于每行左边的空格,为删除这些空格,可使用strip()而不是rstrip():

#file_reader.py
with open("D:\data.txt") as file_object:
     lines=file_object.readlines()
pi_string=''
for line in lines:
    pi_string+=line.strip()
print(pi_string)
print(len(pi_string))

输出为:

D:\www>python file_reader.py
#data.txt3.141592653589793238462643383279
41

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

其转换为浮点数。

6、控制输出的数量

#file_reader.py
with open("D:\data.txt") as file_object:
     lines=file_object.readlines()
pi_string=''
for line in lines:
    pi_string+=line.strip()
print(pi_string[:20]+'...') 
#只显示前20位

输出为:

D:\www>python file_reader.py
#data.txt3.141592653...

7、实例——圆周率中包含你的生日吗

#file_reader.py
with open("D:\data.txt") as file_object:
     lines=file_object.readlines()
pi_string=''
for line in lines:
    pi_string+=line.strip()
birthday=input("Enter your birthday,in the form mmddyy: ")
if birthday in pi_string:
   print("Your birthday appears in the pi!")
else:
   print("Your birthday does not appear in the pi!")


输出为:

D:\www>python file_reader.py
Enter your birthday,in the form mmddyy: 960312
Your birthday does not appear in the pi!

原创粉丝点击