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, \n, \r, ”, ‘\r\n',用于区分换行符,但是这个参数只对文本模式有效;
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,Python www.jb51.net This is a test file
用一小段代码来测试写入文件直观的显示它们的不同
test = [ "test1\n", "test2\n", "test3\n" ] 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.txt Hello, Python www.jb51.net This is a test file test1 test2 test3
w+模式
# cat test.txt test1 test2 test3
r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)
# cat test.txt test1 test2 test3 inuxeye.com This is a test file
注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r'模式也如此
其他测试
> f = open('test.txt') > f.read() #读取整个文件,字符串显示 'Hello,Python\nwww.jb51.net\nThis is a test file\n' > f.read() #指针在文件末尾,不能再读取内容 ''
> f = open('test.txt') > f.readline() #一次读一行,指针在该行末尾 'Hello,Python\n' > f.tell() #改行的字符长度 13 > f.readline() 'www.jb51.net\n' > f.tell() 30 > f.readline() 'This is a test file\n' > f.tell() 50 > f.readline() '' > f.tell() #指针停在最后一行 50
> f = open('test.txt') > f.readlines() #读取整个文件,以列表显示 ['Hello,Python\n', 'www.jb51.net\n', 'This is a test file\n'] > 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 "<stdin>", line 1, in <module> ValueError: I/O operation on closed file
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 谭艳《遗憾DSD》2023 [WAV+CUE][1G]
- Beyond2024《真的见证》头版限量编号MQA-UHQCD[WAV+CUE]
- 瑞鸣唱片2024-《荒城之月》SACD传统民谣[ISO]
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]