当前位置:   article > 正文

深度学习编程笔记1:Python中文件的读取与写入以及read(),readline(),readlines()区别_with open readline入参

with open readline入参

目录

一、读取整个文件

1. with方式

2. open方式

3. open()函数和with open()的异同点

4. 文件路径

5. 读取文件常用的三种方法的区别

二、文件的写入


一、读取整个文件

读取文件主要用到两个方式,即:

1. with方式

with open('文件名') as file_object:
    contents = file_object.read()
    
#表示逐行读取
    for line in file_object:
        print (line)
  • 1
  • 2
  • 3
  • 4
  • 5

2. open方式

open方法直接打开并读取文件,不使用with语句,此方法直接读取文件,但是要记得关闭文件,我们要知道,我们操作的是什么,目的是什么,如果我们只是单纯的读取文件的内容,而不去修改它,那么就单纯使用open()方法,不用第二参数即可。函数open()接受一个参数:要打开文件的名称。

f = open('poem.txt')
    
    # 读取整个文件
contents = f.read()
print(contents)
 
    #组行读取
for line in f:
    print(line.strip())
 
    # 读取文件内容到一个列表中
lines = file_object.readlines()
print(lines)
f.close()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3. open()函数和with open()的异同点

  • with 语句在不再需要访问文件后将其关闭。让python自己判断什么时候该关闭,并自己去关闭。
  • 直接使用open()方法打开文件,要自己调用close()方法关闭文件。如果程序存在bug,导致close()语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),我们会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。并非任何情况下都能轻松地确定关闭文件的恰当时机。
  • open()后是一个对象,这个对象有read()方法与write()方法。

4. 文件路径

在读取文件过程中涉及到文件路径,这里会提到相对路径和绝对路径。

如果被读取的文件在当前执行文件所在的目录中,就可以直接with open(‘文件名’),但是如果不在被执行文件夹下,就要涉及到相对复杂一点的路径读取。

根据文件的组织方式,有时可能要打开不在程序文件所属目录中的文件。例如,可能将程序文件存储在了文件夹Python_work中,而在文件夹Python_work中存在子文件夹text_file,其用于存储程序文件操作的文本文件。尽管文件夹Python_work中包含text_file文件,仅向open()传递位于该文件夹中的文件的名称不可以,源于Python只在文件夹Python_work中查找,而不胡在其子文件夹text_file中查找。这需要提供具体文件路径,应该标出相对路径:

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

    值得注意的是:在Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/)。

    如果相对路径走不通,那就使用绝对路径,如下:

    file_path = 'C:\users\ehmidhih\other_files\text_file\filename.txt'
    with open(file_path) as file_oject:
    • 1

    5. 读取文件常用的三种方法的区别

    常常在读取文件时,会将read(),readline(),readlines()搞混,现对这三个方法做个总结:

    #这是一个文本文件,命名为l.txt
    if you have a dream
    please try to do it
    because dream is lovely
    • 1
    • 2
    • 3
    • read([size])方法:从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象.
    #read()方法
    f = open("a.txt")
    lines = f.read()
    print(lines)
    print(type(lines))
    f.close()
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果为:

    if you have a dream
    please try to do it
    because dream is lovely
    <class 'str'>
    • 1
    • 2
    • 3
    • readline()方法:从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。

    小例子:

    f = open('1.txt','r')
    result = list()
    for line in open('1.txt'):
        line = f.readline()
        print(line)
        result.append(line)
    print(result)
    f.close()
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出结果:

    D:\anaconda\python.exe D:/pyworkspace/11/2018.12.17/lianxi0/0.2.py
    if you have a dream
    
    please try to do it
    
    because dream is lovely
    ['if you have a dream\n', 'please try to do it\n', 'because dream is lovely']
    
    Process finished with exit code 0
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • readlines()方法:读取整个文件所有行,保存在一个列表(list)变量中,该列表可以由Python的for in 结果进行处理,每行作为一个元素,但读取大文件会比较占内存。

    运行代码:

    f = open('1.txt', 'r')                   #以读方式打开文件
    result = list()
    for line in f.readlines():                          #依次读取每行
        line = line.strip()                             #去掉每行头尾空白
        if not len(line) or line.startswith('#'):       #判断是否是空行或注释行
            continue                                    #是的话,跳过不处理
        result.append(line)                             #保存
    result.sort()                                       #排序结果
    print(result)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果:

    D:\anaconda\python.exe D:/pyworkspace/11/2018.12.17/lianxi0/0.2.py
    ['because dream is lovely', 'if you have a dream', 'please try to do it']
    • 1

    二、文件的写入

    • 写模式w特点:(1)只能写,不能读;(2)写的时候会把原来文件的内容清空;(3)当文件不存在时,会创建新文件。
    • 写读模式w+特点:(1)可以写,也可以读;(2)写的时候会把原来文件的内容清空;(3)当文件不存在时,会创建新文件。
    • 追加模式a特点:(1)不能读;(2)可以写,是追加写,即在原内容末尾添加新内容;(3)当文件不存在时,创建新文件。
    • 追加读a+模式特点:(1)可读可写;(2)写的时候是追加写,即在原内容末尾添加新内容;(3)当文件不存在时,创建新文件。

    下面对读写模式进行小结:

    文件读写常用模式
    r只能读
    r+可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容
    w只能写,覆盖整个原有文件(不要乱用),不存在则创建
    w+可读可写,如果文件存在,则覆盖整个文件,不存在则创建
    a只能写,从文件底部添加内容 不存在则创建
    a+可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建

    简单举个例子:

    #W模式
    filename = '1.txt'
    with open (filename,'w') as file_object :
        file_object.write("i love you \n")
        file_object.write("thank you \n") # 加上\n可以一行一行的加入
    
    
    
    
    #a模式
    
    filename = '1.txt'
    with open (filename,'a') as file_object :
        file_object.write(" you are cute \n")
        file_object.write("i love you \n") # 加上\n可以一行一行的加入
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/183104
      推荐阅读
      相关标签
        

      闽ICP备14008679号