⽂件写⼊换⾏python_Python写⼊⽂件(write和writelines)详
解
如果以 r+、w、w+、a、a+ 模式打开⽂件,则都可以写⼊。需要指出的是,当以 r+、w、w+ 模式打开⽂件时,⽂件指针位于⽂件开头
处;当以 a、a+ 模式打开⽂件时,⽂件指针位于⽂件结尾处。另外,需要说明的是,当以 w 或 w+ 模式打开⽂件时,程序会⽴即清空⽂件
的内容。
⽂件指针的概念
⽂件指针⽤于标明⽂件读写的位置。假如把⽂件看成⼀个⽔流,⽂件中每个数据(以 b 模式打开,每个数据就是⼀个字节;以普通模式打
开,每个数据就是⼀个字符)就相当于⼀个⽔滴,⽽⽂件指针就标明了⽂件将要读写哪个位置。下图⽰意简单⽰意了⽂件指针的概念。
⽂件对象提供了以下⽅法来操作⽂件指针:
seek(offset[, whence]):该⽅法把⽂件指针移动到指定位置。当 whence 为 0 时(这是默认值),表明从⽂件开头开始计算,⽐如将offset 设为 3,就是将⽂件指针移动到第 3 处;当 whence 为 1 时,表明从指针当前位置开始计算,⽐如⽂件指针当前在第 5 处,将 offset 设为 3,就是将⽂件指针移动到第 8 处;当 whence 为 2 时,表明从⽂件结尾开始计算,⽐如将 offset 设为 3,表明将⽂件指针移动到⽂件结尾倒数第 3 处。
tell():判断⽂件指针的位置。
此外,当程序使⽤⽂件对象读写数据时,⽂件指针会⾃动向后移动:读写了多少个数据,⽂件指针就⾃动向后移动多少个位置。下⾯程序⽰
范了⽂件指针操作:
f = open('filept_test.py', 'rb')# 判断⽂件指针的位置ll()) # 0# 将⽂件指针移动到3处f.seek(3)ll()) # 3# 读取⼀个字节,⽂件指针⾃动后移1个数据print(f
writelines()方法将什么写入文件上⾯程序⽰范了使⽤ seek() ⽅法来移动⽂件指针,包括从⽂件开头、指针当前位置、⽂件结尾处开始计算。运⾏上⾯程序,结合程序输出
结果可以体会⽂件指针移动的效果。当⽂件指针位于哪⾥时,程序就会读取哪个位置的数据;当程序读取多少个数据时,⽂件指针就会⾃动
向后移动多少个位置。
输出内容
⽂件对象提供的写⽂件的⽅法主要有两个:
1. write(str 或 bytes):输出字符串或字节串。只有以⼆进制模式(b 模式)打开的⽂件才能写⼊字节串。
2. writelines(可迭代对象):输出多个字符串或多个字节串。
下⾯程序⽰范了使⽤ write() 和 writelines() 输出字符串:
import osf = open('x.txt', 'w+')# os.linesep代表当前操作系统上的换⾏符f.write('我爱Python' + os.linesep)f.writelines(('⼟门壁甚坚,'+ os.linesep,'杏园度亦难。'+ os.
上⾯程序中第 4 ⾏代码调⽤ write() ⽅法输出单个字符串;第 5 ⾏代码则调⽤ writelines() ⽅法输出多个字符串。当采⽤上⾯⽅法输出⽂
件时,程序会使⽤当前操作系统默认的字符集。如果需要使⽤指定的字符集来输出⽂件,则可以来⽤⼆进制形式(程序先将所输出的字符串
转换成指定字符集对应的⼆进制数据(字节串),然后输出⼆进制数据)。下⾯程序⽰范了使⽤⼆进制数据输出,通过这种⽅式来实现以 UTF-
8 字符集保存⽂件:
import osf = open('y.txt', 'wb+')# os.linesep代表当前操作系统上的换⾏符f.write(('我爱Python' + os.linesep).encode('utf-8'))f.writelines((('⼟门壁甚坚,'+ os.linesep).
上⾯程序中的代码以 wb+ 模式打开⽂件,这意味着程序会以⼆进制形式来输出⽂件,此时程序输出的必须是宇节串,不能是字符串。因
此,程序调⽤ encode() ⽅法将字符串转换成字节串,转换时指定使⽤ UTF-8 字符集,这意味着程序将会以 UTF-8 字符集来保存⽂件。
该程序输出的⽂件内容与上⼀个程序输出的⽂件内容相同,只是该程序输出的⽂件内容是以 UTF-8 字符集保存的。从上⾯的程序可以看
到,当使⽤ w+、wb+ 模式打开⽂件时,会导致⽂件内容被清空。因此,⽆论程序运⾏多少次,其输出的⽂件内容都只保留最近⼀次的输出
数据。如果程序希望在⽂件后⾯追加内容,则应该使⽤ a+ 或 ab+ 模式。例如如下程序:
import osf = open('z.txt', 'a+')# os.linesep代表当前操作系统上的换⾏符f.write('我爱Python' + os.linesep)f.writelines(('⼟门壁甚坚,'+ os.linesep,'杏园度亦难。'+ os.l
上⾯程序以 a+ 模式打开指定⽂件,这意味着以追加模式来打开⽂件,因此,使⽤ open() 函数打开⽂件后,不会⽴即清空⽂件内容,并且
会将⽂件指针移动到⽂件结尾处,程序会在⽂件结尾处追加内容。每次运⾏上⾯程序,都会向 z.txt ⽂件中追加⼀段内容;程序运⾏的次数
越多,z.txt ⽂件的内容就会越多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论