文件读写

Posted 娄先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件读写相关的知识,希望对你有一定的参考价值。

一、文件打开open

  文件打开针对当前的工作目录。

  可以使用os.chdir() 来改变工作目录

1.1 open的两种方式

  1.手动挡,需要手动关闭

f = open(1.py, r)
print(f.read())
f.close()

  2.自动挡,使用with管理上下文,自动关闭

with open(1.py, r) as f:
    print(f.read())

 

1.2 文件读写模式

# 基本三种模式
  r    以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
  w    以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
  a    以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
# 扩展模式
  r+    在r的基础上增加了可写功能,文件指针指向开头
  w+    在w的基础上增加了可读功能, w+,跟w一样,增加了可读功能。
  a+    在a的基础上增加了可读功能,不管文件指针在哪,都移到末尾
在上面这几种模式中,都可以混搭一个b模式,以二进制的方式进行读写。
保证在扩平台或其他操作,读写正确。 在lunux下会忽略b,默认就是二进制读取

 

二、文件读操作

2.1  read()

  直接read(),获取全部,一次性存入内存中。返回一个字符串。 针对大文件出错

2.2 read(size)

  指定size读取,可以解决大文件读取出错。

while True:
    block = f.read(1024)
    if not block:
        break

 

2.3 readline()

  每次读取一行

while True:
    line = f.readline()
    if not line:
        break

 

2.4 readlines():

  读取全部的行,构成一个list,通过list来对文件进行处理,但是这种方式依然会造成MemoyError

for line in f.readlines():
    ....

 

2.5 使用文件描述符,可迭代对象

with open(filename, r) as flie:
    for line in file:
        ....

 

 

三、文件写操作

  写操作就比较的简单了,两种方法

3.1 write()

  参数为字符串

3.2 writeline()

  参数为一个序列,比如列表

 

四、文件定位

with open(2.py, w+, encoding=utf-8) as f:
    f.write(我是中国人)
    print(f.tell())     # 使用字节来计算,一个汉字3字节,输出15
    f.seek(0)
    print(f.read(3))    # 使用字符来计算,输出 ‘我是中‘,因为读的时候有空格或其他符号(1个字节会错乱)

 

以上是关于文件读写的主要内容,如果未能解决你的问题,请参考以下文章

Android tcp/ip 读写缓冲区脱离主代码

读写锁 与 互斥锁

Java-jxl插件Excel文件读写报错jxl.read.biff.BiffException: Unable to recognize OLE stream

Java-jxl插件Excel文件读写报错jxl.read.biff.BiffException: Unable to recognize OLE stream

VSCode自定义代码片段——.vue文件的模板

java中ReentrantReadWriteLock读写锁的使用