美文网首页
19.python3 File

19.python3 File

作者: dwy_interesting | 来源:发表于2020-05-26 10:50 被阅读0次

    打开和关闭文件

    上面,我们已经学习了如何使用 print() 、input() 两个函数读写标准输入输出,接下来我们学习如何读写文件。
    Python 内置了 file() 和 open() 两个函数用来打开一个文件进行读写

    open() 函数

    open() 函数会会打开一个文件,创建一个 file 对象,返回一个文件句柄,然后相关的方法就可以使用文件句柄来读写打开的文件了。
    file_object = open(file_name [, access_mode][, buffering])
    参数说明:
    name -- 一个包含了你要访问的文件名称的字符串值
    mode -- mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表,这个参数是非强制的,默认文件访问模式为只读 (r)。
    buffering -- 如果 buffering 的值被设为 0,就不会有缓冲,如果 buffering 的值取 1,访问文件时会缓冲,如果将 buffering 的值设为大于 1 的整数,就是缓冲区的大小,如果取负值,缓冲区的大小则为系统默认。

    举例说明:文件打开模式

    r -- 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
    rb -- 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式
    r+ -- 打开一个文件用于读写。文件指针将会放在文件的开头
    rb+ -- 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
    w -- 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件

    File 对象的属性

    当我们拥有了一个文件对象的句柄后,我们就可以得到有关该文件的各种信息,file 对象相关的所有属性:
    file.closed 返回 True 如果文件已被关闭,否则返回 False
    file.mode 返回被打开文件的访问模式
    file.name 返回文件的名称
    file.softspace 如果用 print 输出后,是否同时输出一个空格符,是则返回 True,否则返回 False 。默认为 False
    举个栗子:

    # 打开一个文件
    fp = open("demo.txt", "wb")
    print ("文件名: ", fp.name)
    print ("是否已关闭 : ", fp.closed)
    print ("访问模式 : ", fp.mode)
    print ("末尾是否强制加空格 : ", fp.softspace)
    

    运行以上 Python 代码,输出结果如下 以上实例输出结果:
    文件名: demo.txt
    是否已关闭 : False
    访问模式 : wb
    末尾是否强制加空格 : 0

    close() 方法

    File 对象的 close() 方法用于刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入
    当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件
    读写完文件就用 close() 方法关闭文件是一个良好的编程习惯

    语法

    fileObject.close();
    

    举个栗子:

    # 打开一个文件
    fp = open("demo.txt", "wb")
    print ("文件名: ", fp.name)
    
    # 关闭打开的文件
    fp.close()
    

    运行以上 Python 代码,输出结果如下
    文件名: demo.txt

    读写文件

    读写文件

    file 对象提供了一系列方法,可以让我们轻松简单对文件进行读写。其中最重要的两个方法就是: read() 和 write()

    write() 方法

    write() 方法用于将任何 Python 字符串写入一个打开的文件,Python 字符串可以是二进制数据,而不是仅仅是文字,需要注意的是:write() 方法不会在字符串的结尾添加换行符 ('\n')。

    语法:

    fileObject.write(string);        #参数 string 就是要写入到已打开文件的内容
    

    举个栗子:

    # 打开一个文件
    fp = open("demo.txt", "wb")
    fp.write( "Hello\nworld");
    
    # 关闭打开的文件
    fp.close()
    

    运行以上 Python 代码,打开 demo.txt 文件可以看到如下内容
    Hello
    world

    read() 方法

    read() 方法从一个打开的文件中读取一个字符串,读取的内容可以是文本内容,也可以是二进制输出,这取决于原本文件内容的存储格式。

    语法:

    fileObject.read([count]);        #参数 count 用于设置要从已打开文件中读取的字节计数
    

    read() 方法会从当前的文件指针 ( 刚打开的文件就是从头开始 ) 开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾

    举个栗子:
    存在文件demo.txt,内容如下:
    Hello
    world

    下面的代码从 demo.txt 文件中读取 5 个字节的内容

    fp = open("demo.txt", "r+")     # 打开一个文件
    str = fp.read(5);
    print ( "读取的字符串是 : ", str )
    
    fp.close()      # 关闭打开的文件
    

    运行以上 Python 代码,输出结果如下
    读取的字符串是 : Hello

    文件定位 -- 文件游标

    文件游标就是当前文件读到哪里或写到哪里了,文件游标类似于我们看到的光标

    tell() 方法

    tell() 方法用于显示当前文件对象的游标的位置,换句话说,下一次的读写会发生在文件开头这么多字节之后

    fileObject.tell()
    

    seek() 方法

    seek() 方法用于改变当前文件的游标位置
    seek ( offset [,from] )
    参数 offset 变量用于设置要移动的字节数
    参数 from 用于设置开始移动字节的参考位置

    如果 from 被设为 0,这意味着将文件的开头作为移动字节的参考位置
    如果设为 1,则使用当前的位置作为参考位置
    如果它被设为 2,那么该文件的末尾将作为参考位置

    假设存在文件 demo.txt 文件内容如下
    Nice to meet you!
    举个栗子:

    # 打开一个文件
    fp = open("demo.txt", "r+")
    str = fp.read(10);
    print ("读取的字符串是 : ", str)
    
    # 查找当前位置
    position = fp.tell();
    print ("当前文件位置 : ", position)
    
    # 把指针再次重新定位到文件开头
    position = fp.seek(0, 0);
    str = fp.read(10);
    print ("重新读取字符串 : ", str)
    # 关闭打开的文件File
    fp.close()
    

    运行以上 Pyhton 代码,输出结果如下:
    读取的字符串是 : Nice to me
    当前文件位置 : 10
    重新读取字符串 : Nice to me

    相关文章

      网友评论

          本文标题:19.python3 File

          本文链接:https://www.haomeiwen.com/subject/twrkwhtx.html