Python文件

读文件

语法:def open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

  • 参数file注意事项
    1. 文件路径是一个字符串(包括你要读取的文件名和文件后缀名)
    2. 路径中”/”或者 “\”表示下级。(”\”中第一个”\”是转义符)
    3. 路径可以是绝对路径和相对路径(如果路径里只有文件名,则表示的是相对路径,相当于和该python文件是同级存储)
  • 参数mode注意事项
    1. r: 读
    2. rb: 读二进制
    3. r+: 读写
    4. rb+: 读二进制
    5. w: 写
    6. wb: 写二进制
    7. w+: 读写
    8. wb+: 写二进制
    9. a:附加写方式打开,不可读
    10. a+: 附加读写方式打开
    11. ab:附加写方式打开,不可读 (二进制)
    12. ab+: 附加读写方式打开
  • 参数encoding:字符编码注意事项
    1. GBK:仅在中国通用
    2. Utf-8:万国通用码
    3. Ascii
    4. gb2312

关文件

file.close()
方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
补充:这时候print(“file”)的返回值是None

文件相关操作

  • file.flush()
    用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
    一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
  • file.fileno()
    返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。
    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号码,因此,在网络通信过程中稍不注意就有可能造成串话
  • file.isatty()
    检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False。
  • file.next()
    python 3 的内置函数 next() 通过迭代器调用 next() 方法返回下一项。 在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration
  • file.read([size])
    从文件读取指定的字节数,如果未给定或为负则读取所有。
  • file.readline([size])
    用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。
    如果size 超出了当前行的字符长度,则只显示当前行,不会显示下一行的字符,但是光标的位置是下一行的开始
  • file.readlines([sizeint])
    用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。 如果碰到结束符 EOF 则返回空字符串。
    若有sizeint参数时候:
    若Sizeint小于第一行长度(一个字符和汉字都长度都为1)则打印第一行的所有内容,若sizeint大于第一行长度小于第二行长度(换行是长度加1,不加2,计算光标时才加2)则打印第一行和第二行所有的内容,以此类推。
  • file.seek(offset[, whence])
    offset – 开始的偏移量,也就是代表需要移动偏移的字节数
    whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
  • file.tell()
    方法返回文件的当前位置,即文件指针当前位置。
  • file.truncate([size])
    用于从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后 V 后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。
  • file.write(str)
    用于向文件中写入指定字符串。
    在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
    如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。
  • file.writelines(sequence)
    向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。

补充及案例

  1. file = open("C:\\Users\\Administrator\\Desktop\\001.txt", "r")
    data = file.read(30)
    print(file.name)
    print(data)
    file.close()
    

    read(10)代表着读取文件的长度,如果不设置则全部读取(汉子也算一个长度)
    file.name 代表着所读文件的文件名
    补充:这时候print(“file”)的返回值是001.txt中文件字符串的长度

  2. for i in file:
        print(i, end="\r")
    file.close()
    
    

    实行结果:

    灯1
    下你
    是风1
    又似画s,
    恍若灯火处的画中仙
    不食人间烟火,又让人
    难以靠近。
    1323465465465465

  3. for i in file:
        print(i, end="\r")
    print(9999999999, end="")
    file.close()
    

    实行结果:

    灯1
    下你
    是风1
    又似画s,
    恍若灯火处的画中仙
    不食人间烟火,又让人
    难以靠近。
    9999999999
    结论:

    1. 读文件时候print(i, end="\r") 读完后将光标移动到开始,但是前面没有被覆盖掉,因为读完一行后,Pycharm打印面板上的光标移动到当前行的第一个,但是读取文件中的光标换行,打印面板中的光标就换行了,继续打印,没有影响。
    2. 读取到文件最后一行时候,光标移动到当前行的第一行,文件结尾时,读取文件中的光标不会换行,在执行print(9999999999, end="")时候就将文件中的最后一行覆盖掉。
    3. end="\r" 指的是打印面板的光标,和文件中的光标没有关系。
    4. print(file.readline(1)) 数字代表读取该行中的前几个字符,无参时读取整行数据
      print(file.readlines(1)) 数字要读取到的字符总数,参数如果超过一行的总数,则自动读取下一行,作为下一个列表元素。无参时读取所有数据等价于read,但返回值是每行组成一个元素(元素末尾是”\n”结束)的列表eg [‘街\n’, ‘灯1\n’]
  4. 写文件

    file = open("C:\\Users\\Administrator\\Desktop\\002.txt", mode="w")
    

    如果文件不存在,则新建一个文件,如果存在,则覆盖后写文件
    要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值