Python open()文件处理使用介绍

1. open()语法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, , , ”, ‘’,用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open

3. 参数mode的基本取值

Character Meaning ‘r’ open for reading (default) ‘w’ open for writing, truncating the file first ‘a’ open for writing, appending to the end of the file if it exists ‘b’ binary mode ‘t’ text mode (default) ‘+’ open a disk file for updating (reading and writing) ‘U’ universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

常见的mode取值组合

r或rt 默认模式,文本模式读rb   二进制文件 w或wt 文本模式写,打开前文件存储被清空wb  二进制写,文件存储同样被清空 a  追加模式,只能写在文件末尾a+ 可读写模式,写只能写在文件末尾 w+ 可读写,与a+的区别是要清空文件内容r+ 可读写,与a+的区别是可以写到文件任何位置

登录后复制

4. 测试
测试文件test.txt,内容如下:

Hello,Pythonwww.jb51.netThis is a test file

登录后复制

用一小段代码来测试写入文件直观的显示它们的不同

test = [ "test1", "test2", "test3" ]f = open("test.txt", "a+")try: #f.seek(0) for l in test:  f.write(l)finally: f.close()

登录后复制

a+、w+和r+模式的区别(测试后还原test.txt)
a+模式

# cat test.txtHello, Pythonwww.jb51.netThis is a test filetest1test2test3

登录后复制

w+模式

# cat test.txttest1test2test3

登录后复制

r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意也是一个字符)

# cat test.txttest1test2test3inuxeye.comThis is a test file

登录后复制

注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r’模式也如此
其他测试

>>> f = open('test.txt')>>> f.read() #读取整个文件,字符串显示'Hello,Pythonwww.jb51.netThis is a test file'>>> f.read() #指针在文件末尾,不能再读取内容''

登录后复制

>>> f = open('test.txt')>>> f.readline() #一次读一行,指针在该行末尾'Hello,Python'>>> f.tell() #改行的字符长度13>>> f.readline()'www.jb51.net'>>> f.tell()30>>> f.readline()'This is a test file'>>> f.tell()50>>> f.readline()''>>> f.tell() #指针停在最后一行50

登录后复制

>>> f = open('test.txt')>>> f.readlines() #读取整个文件,以列表显示['Hello,Python', 'www.jb51.net', 'This is a test file']>>> f.tell() #指针在最后一行50

登录后复制

>>> f = open('test.txt','w') #覆盖创建新文件>>> f.write('Hello,Python!') #如果写入内容小于1024,会存在内存,否则需要刷新>>> f.flush() #写入到硬盘>>> f.close() #关闭文件会自动刷新>>> f.write('Hello,Linuxeye') #关闭后,写失败,提示文件已经关闭Traceback (most recent call last): File "", line 1, in ValueError: I/O operation on closed file 

登录后复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2292326.html

(0)
上一篇 2025年2月28日 01:37:55
下一篇 2025年2月18日 05:06:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中3种内建数据结构:列表、元组和字典

    python中有3种内建的数据结构:列表、元组和字典。参考简明python教程 1. 列表list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只…

    编程技术 2025年2月28日
    200
  • Python fileinput模块使用介绍

    fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。它的工作方式和readlines很类似,不同点在于它不是将全部的行读到列表中而是创建了一个xreadlines对象。 下面是fi…

    编程技术 2025年2月28日
    200
  • Python函数中定义参数的四种方式

    python中函数参数的定义主要有四种方式: 1. F(arg1,arg2,…) 这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的值(实际参数…

    编程技术 2025年2月28日
    200
  • Python 列表list使用介绍

    一组有序项目的集合可变的数据类型【可进行增删改查】列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔列表可通过序号访问其中成员 登录后复制 定义 >>&gt…

    编程技术 2025年2月28日
    200
  • Python 2.7.x 和 3.x 版本的重要区别小结

    许多python初学者都会问:我应该学习哪个版本的python。对于这个问题,我的回答通常是“先选择一个最适合你的python教程,教程中使用哪个版本的python,你就用那个版本。等学得差不多了,再来研究不同版本之间的差别”。 但如果想要…

    编程技术 2025年2月28日
    200
  • Python 字典dict使用介绍

    Python字典的创建方法一: >>> blank_dict = {}>>> product_dict = {‘MAC’:8000,’Iphone’:5000, ‘ipad’:4000, ‘mp3’: 3…

    编程技术 2025年2月28日
    200
  • Python 序列化 pickle/cPickle模块使用介绍

    python序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的时候保存进度,然后你再次启动的时候回到上次退出的地方。(实际上…

    编程技术 2025年2月28日
    200
  • ubuntu16.04升级python3.7.1教程

    要在Ubuntu 16.04上升级到Python 3.7.1,您可以按照以下步骤进行操作: 确保系统已经更新: 在终端中执行以下命令来更新系统软件包: sudo apt updatesudo apt upgrade 登录后复制 安装构建工具…

    2025年2月28日
    200
  • Python lambda和Python def区别分析

    python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做lambda的函数,是从lisp借用来的,可以用在任何需要函数的地方。 lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使…

    编程技术 2025年2月28日
    200
  • Python re模块介绍

    python中转义字符 正则表达式使用反斜杠” “来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用” \\ “表示正则表达式中的” “,因为正则表达式中如果要匹配” “,需要用来转义,变成” \ “,而Pyt…

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论