Python 文件I/O

Posted 安柠筱洁

tags:

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

一,对文件进行操作的流程:

     第一,建立文件对象。

     第二,调用文件方法进行操作。

     第三,不要忘了关闭文件。(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成关闭文件的习惯)

eg:f = open(\'1,txt\',encoding =\'utf-8\')

     print(f.read())

     f.close()

二,不同模式打开文件的完全列表:

注:只要沾上r,文件不存在的时候,打开都会报错


       只要沾上w,把文件内容清空

不同模式及不同模式下的指针位置:

三,文件操作方法

f.seek(n)  #查看光标定位
f.tell() #查看当前文件中指针的位置
f.truncate() #清空文件内容
f = open(\'file1,txt\',encoding =\'utf-8\')
print(f.tell()) #光标默认在起始位置
f.seek(10) #把光标定位到第10个字符之后
print(f.tell()) #输出10
f.close()
常用操作:
f = open(\'file.txt\',\'a+\')

f.seek(0) #把光标定位到起始位置
f.truncate() #清空文件内容
f.read() #读取文件里面所有的内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话会把内存撑爆
f.readline()#读取一行的内容
f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,
因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
f.readable()#判断文件是否可读
f.write() #写入内容 写的时候传入一个str类型
f.writelines() #str list dic 元组类型(写的时候传入一个可迭代的对象)
f.flush() #立即把缓冲区里面的内容写到磁盘里

大文件时,读取文件高效的操作方法:

f = open(\'file.txt\')
for line in f:
print(line)
这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

with使用:在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:

 with open(\'file.txt\',\'r\'as f:#打开一个文件,把这个文件的句柄付给f

          for line in f:
              print(line)
   with open(\'file.txt\') as fr,with open(\'file_bak\',\'w\') as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
           for line in fr:#循环file.txt中的每一行
               fw.write(line)#写到file_bak文件中
 
 四、修改文件
1、第一种 简单粗暴的
    1、先把所有的内容读出来
    2、再把文件内容清空
3、再把新的内容写进去
2、两个文件
循环第一个文件,逐行处理,处理完一行写到新文件里面。

删掉旧的文件,新的文件改名。
 实例如下:
法一:with open(\'geci\',\'a+\',encoding=\'utf-8\') as f:
f.seek(0)
all = f.read()
new_all = all.replace(\'二\',\'一\')
f.seek(0)
f.truncate()
f.write(new_all)
f.flush()

法二:import os
with open(\'geci\',encoding=\'utf-8\') as f,open(\'geci.gy\',\'w\',encoding=\'utf-8\') as f2:
for line in f:
new_line = line.replace(\'一\',\'二\')
f2.write(new_line)

os.remove(\'geci\')#删文件
os.rename(\'geci.gy\',\'geci\')#改名
 

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

Python文件操作 I/O

17python 文件I/O

2017.12.20 Python 文件I/O

Python 15 I/O编程

Python 文件 I/O

Python 文件I/O