最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python中文件操作的相关内容总结(附示例)

来源:动视网 责编:小采 时间:2020-11-27 14:20:39
文档

python中文件操作的相关内容总结(附示例)

python中文件操作的相关内容总结(附示例):本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文件的操作非常简单,
推荐度:
导读python中文件操作的相关内容总结(附示例):本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文件的操作非常简单,


本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1. 文件操作介绍

说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文件的操作非常简单,并不像Java等其他语言一样有各种各样的流操作,我们直接使用open函数即可打开一个文件,然后进行各种操作,但是根据打开的不同的方式所能够执行的操作也不一样,打开文件的方式有:r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 等等。

下面我们先看一个读取的文件操作:

In [2]: f = open(file='a.txt', mode='r', encoding='utf-8')

In [3]: f.read()
Out[3]: '每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大
'
In [4]:

使用open函数打开文件,并且返回一个文件对象,open函数常见的几个参数file(要操作的文件名),mode(以什么模式打开)和encoding(指定一种编码来读取文件),根据不同的mode模式,返回的文件会有各种不同的操作。下面我们来看一下文件的几种操作。

2. 文件操作的几种方式

(1)只读操作

只读操作只需指定mode为r即可:

In [5]: f = open(file='a.txt', mode='r', encoding='utf-8')
 
In [6]: f.read()
Out[6]: '每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大
'
 
In [7]: f.readable() # 判断文件是否可读
Out[7]: True
 
In [8]: f.writable() # 判断文件是否可写
Out[8]: False # 此处是以只读模式打开的文件,所以返回False不可写
 
In [9]: f1 = open(file='单分支结构.eddx', mode='rb') # 使用‘rb’可以打开存储为二进制的数据,图片、视频等
 
In [10]: f1.read(20)
Out[10]: b'PKx03x04x14x00x08x00x08x00mNxe3Hxa9x95xb3x9eWx01'

(2)只写操作

mode='w'

 
In [13]: f = open(file='a.txt', mode='w', encoding='utf-8') 
 
In [14]: f.read() # 此时尝试读取文件会报错 
--------------------------------------------------------------------------- 
UnsupportedOperation Traceback (most recent call last) 
<ipython-input-14-571e9fb02258> in <module> 
----> 1 f.read() 
 
UnsupportedOperation: not readable 
 
In [15]: f.write('葫芦娃') 
Out[15]: 3 
 
In [16]: f.close() 
 
In [17]: !cat a.txt # 此时查看文件之前那的内容已经被覆盖了 
葫芦娃 
In [18]:

使用mode='w'操作文件时首先会在打开文件时先清空文件,然后再根据操作把内容写入文件,只读模式有以下特点:

  • 当文件不存在时,会自动创建文件,然后打开文件进行操作

  • 打开文件时会先清空文件的内容,然后再从头开始写入

  • 文件以只写模式打开,不能够读取

  • (3)追加操作

    mode='a'

    In [18]: f = open(file='a.txt', mode='a', encoding='utf-8')
     
    In [19]: f.write('每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    ')
    Out[19]: 42
     
    In [20]: f.close()
     
    In [21]:
     
    In [21]: !cat a.txt
    葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
     
    In [22]:

    追加模式的操作:

  • 打开文件时如果文件不存时会先创建文件

  • 往文件中写入内容时都是在文件末尾写入,不论光标在哪

  • 打开的文件只能写入,不能读取

  • (4)r+模式

    r+模式是加强的读操作,即可以读写:

    In [22]: f = open(file='a.txt', mode='r+', encoding='utf-8')
    
    In [23]: f.readable()
    Out[23]: True
    
    In [24]: f.writable()
    Out[24]: True
    
    In [25]: f.read()
    Out[25]: '葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    '
    
    In [26]: f.write('
    哈哈哈哈哈哈哈')
    Out[26]: 8
    
    In [27]: f.close()
    
    In [28]: !cat a.txt # 查看写入的文件并没有异常
    葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    
    哈哈哈哈哈哈哈
    In [29]: f = open(file='a.txt', mode='r+', encoding='utf-8')
    
    In [30]: f.seek(0, 2) # seek可以调整光标位置
    Out[30]: 153
    
    In [31]: f.write('你的进步越来越大')
    Out[31]: 8
    
    In [32]: f.read() # 先写后读会读出空字符
    Out[32]: ''
    
    In [33]:

    总结:增强型的读操作对文件可读可写,但是顺序必须是先读取在往里面写入,如果先读再写入再读取的时候可能会读取到空字符串

    r+模式深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显?的是多少. 再写入或者操作?件的时候都是在结尾进?的操作

    (5)w+和a+模式

    w+模式和a+模式在实际使用场景较少,这边简单介绍一下:

  • w+:增强型的w模式,可以写和读操作,但是也跟r+一样,如果先读操作再写操作的话会有坑出现,并且每次在打开文件是会先清空文件,因此使用场景较少

  • a+:增强型的a模式,也可以进行读写操作,但是写入时只能往文件的末尾写入,无论光标怎么移动,都只能在文件末尾写入

  • 3. 文件的操作的方法

    (1)文件的读取和写入

    文件的写入:主要是write方法以及writelines方法

  • write方法:直接写入字符串即可,上面的例子中也有用到

  • writelines方法:传递的参数必须时可迭代的(如列表和元组等)

  • 文件的读取:

  • read方法:read方法接收一个int型的参数,表示一次读取几个字符(seek的单位是字节),不提供默认是读取文件所有内容

  • readline方法:读取文件一行,文件很大时这个方法很使用,不会一次读取整个文件

  • readlines方法:读取出整个文件,以每一行分割存放到一个列表里并返回这个列表

  • In [34]: f = open(file='a.txt', mode='r', encoding='utf-8')
    # 葫芦娃每天坚持一点,
    # 每天努力一点,
    # 每天多思考一点,
    # 慢慢你会发现,
    # 你的进步越来越大
     
    # 哈哈哈哈哈哈哈你的进步越来越大
    In [35]: f.read(10) # 这里时一次读取10个字符
    Out[35]: '葫芦娃每天坚持一点,'
     
    In [36]: f.readline()
    Out[36]: '
    '
     
    In [37]: f.readline() # 每次读取一行
    Out[37]: '每天努力一点,
    '
     
    In [38]: f.readlines() # 返回的是一个列表
    Out[38]: ['每天多思考一点,
    ', '慢慢你会发现,
    ', '你的进步越来越大
    ', '
    ', '哈哈哈哈哈哈哈你的进步越来越大']
     
    In [39]:

    readline(文件句柄)和readlines的区别

    文件句柄是一个可迭代对象,在循环遍历时每遍历一次取一行,不会在读取文件时一次性全部读出来

    readlines返回的结果是一个列表,会一次性把整个文件的内容读取出来并返回一个列表,在处理大文件时会非常消耗资源

    也可以使用循环去遍历文件句柄,输出文件中的内容:

    In [39]: f.seek(0)
    Out[39]: 0
    
    In [40]: for line in f:
     ...: print(line.strip())
    葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    
    哈哈哈哈哈哈哈你的进步越来越大
    
    In [41]:

    (2)文件操作的其他方法

  • close:关闭文件

  • readable:判断文件是否可读

  • seek:移动光标,接收两个数据第一个参数表示偏移到哪个位置(移动的单位是byte. 所以如果是UTF-8的中?部分要是3的倍数),第二个参数表示从那个位置开始偏移(0,代表开头,1代表当前位置,2代表结尾)

  • seekable:判断当前文件的光标是否可移动

  • tell:返回当前光标所在的位置

  • truncate:截断数据(谨慎操作),默认截断光标后所有字符

  • writable:判断文件是否可写

  • (3)打开文件的另一种方式

    在打开一个文件后,要记得在文件使用结束狗使用close方法关闭文件句柄,但有时在中间进行大量的操作后可能会忘了关闭,下面介绍的这种方法可以不用自己手动关闭文件了,他会在您操作解说后(代码块的语句执行完毕)自动关闭文件句柄,这种方法就是使用context上下文管理,使用with语句实现:

    In [43]: with open('a.txt', mode='r', encoding='utf-8') as f: # 使用with管理上下文,最后退出时会自己执行close动作
     ...: for line in f:
     ...: print(line.strip())
    葫芦娃每天坚持一点,
    每天努力一点,
    每天多思考一点,
    慢慢你会发现,
    你的进步越来越大
    哈哈哈哈哈哈哈你的进步越来越大

    文档

    python中文件操作的相关内容总结(附示例)

    python中文件操作的相关内容总结(附示例):本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1. 文件操作介绍说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的。在python中文件的操作非常简单,
    推荐度:
    标签: 实例 汇总 python
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top