《文件读写》
一、什么是文件读写
文件读写是指在Python程序中对文件进行读取和写入操作。通过文件读写,可以读取文件中的数据,或者向文件中写入数据。
Python提供了多种文件读写的方式,其中最常用的方式是使用open()
函数打开一个文件,并通过文件对象进行读写操作。文件读写的基本流程如下:
-
使用
open()
函数打开文件,可以指定文件路径、文件打开方式(如读取模式'r'
、写入模式'w'
、追加模式'a'
等),并将返回的文件对象赋值给一个变量。 -
使用文件对象的
read()
方法读取文件内容,可以指定参数来读取指定数量的字符或者全部内容。 -
使用文件对象的
write()
方法写入数据到文件中,可以指定参数为要写入的字符串。 -
使用文件对象的
close()
方法关闭文件,释放资源。
除了使用open()
函数进行文件读写外,还可以使用with
语句来自动管理文件的打开和关闭,以避免忘记关闭文件导致资源泄漏的问题。使用with
语句打开文件后,文件会在with
块结束后自动关闭。
另外,Python还提供了其他一些用于文件读写的函数和方法,如readline()、readlines()
writelines()
等,可以根据实际需要选择使用。
二、绝对位置、相对位置
在Python中,绝对位置和相对位置用于描述文件或目录在文件系统中的位置关系。
绝对位置是指文件或目录在整个文件系统中的具体路径。绝对位置使用完整的路径表示,从根目录开始一直到文件或目录的路径。例如,D:\soft\pycharm\code\pythonProject\123.txt,即从盘符开始一直往内部打开文件知道找到需要打开的文本文件名
相对位置是指文件或目录相对于当前工作目录的位置关系。当前工作目录是指程序执行时所在的目录。相对位置使用相对于当前工作目录的路径表示。例如,如果当前工作目录是D:\soft\pycharm\code\pythonProject,那么pythonProject\123.txt就是一个相对位置,表示位于当前工作目录下的pythonProject目录下的123.txt
文件。
注意:相对位置存在相对概念 , ./ 表示同级文件夹下, ../ 表示上级目录下,
三、open方法
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)
四、常用mode 参数主要有
五、使用with语句
if __name__ == '__main__':for i in range(10):pass# with open一个文件不需要关闭文件# 如果能够一次性写完 用这个比较好with open("./data.txt", "r", encoding="utf8") as fp:print(fp.readline(10))pass
加入循环之后就会不停地打开关闭,这样对文件会有很大程度的损坏,所以最好是一次性写完写入的文件内容,以防多次打开关闭文件。
六、读文件
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:
以下是三种打开文件时地址的格式,因为会有 \n等转义字符
f = open('C:\\users\\shujia\\desktop\\test.txt', 'r',encoding="UTF-8")
f = open('C:/users/shujia/desktop/test.txt', 'r',encoding="UTF-8")
f = open(r'C:\users\shujia\desktop\test.txt', 'r',encoding="UTF-8")
其中c:\\users\\shujia\\desktop\\test.txt表示文件的绝对位置,
encoding="UTF-8"表示编码方式是UTF-8的形式
' r '标示符表示读,这样成功地打开了一个文件,如果文件不存在,open()函数就会抛出一个IOError的错误,如果文件成功打开,调用read方法可以把内容读到内存,用一个str对象接收:
f.read() 得到'Hello, world!'文件使用完毕后调用close()方法可以关闭文件:f.close()
假设创建了一个文本文档 123.txt,其绝对路径为D:\soft\pycharm\code\pythonProject\123.txt
其内部有这样的一段内容:
那么如果想读取文件内容,就可以用以下代码:
if __name__ == '__main__':fp=open(r"D:\soft\pycharm\code\pythonProject\123.txt",'r',encoding='utf-8')#打开文件夹print(fp.read(10))#其中的10表示打印的长度,如果不写则打印全部,如果写的很大,则打印全部内容fp.close() #关闭文件夹
其打印结果为:
f.read(size):读取文件f的内容,size为文件长度,不写参数则读取文件全部内容
f.readline(size):读取文件中一行内容,size为该行的长度,不写参数size则读取第一行全部内容
f.readlines(size): 读取文件所用的行,参数表示读取的长度,如果第一行没有超过参数所示长度则打印第二行,以此类推,如果没有超过下一行则打印下一行全部内容,以列表形式返回
f.seek(offset): 改变当前文件操作指针位置,offset为0则为文件开头,为2则为结尾
if __name__ == '__main__':fp=open("D:/soft/pycharm/code/pythonProject/123.txt",'r',encoding='utf-8')#打开文件夹print(fp.read(10))#其中的10表示打印文件内容的长度,如果不写则打印全部文件内容,如果写的很大,则打印全部内容print(fp.readline(10))#表示打印第一行的内容,括号内参数10表示打印字符长度,如果不写则默认打印第一行全部内容print(fp.readlines(25))#返回的参数读取文件长度的列表,参数没到一行 读一行 参数超过一行读完下一行print(fp.readlines())# 读取所有的行 存入列表中fp.close() #关闭文件夹
七、写文件
写文件是指向文件中写入数据或内容的操作。在Python中,可以使用write()
方法来写入文件。该方法接受一个字符串作为参数,并将其写入文件。写入时,文件指针会自动定位到当前写入的位置,并在写入后移动到下一个位置。
f.write(s) :把字符串s写入文件f中
f.writelines(a):把列表类型的a中各元素连接起来写入文件
如下两个代码:
lt=['abc','ABC','12345','666']
f=open(f'list1.txt','w',encoding='utf-8') #以w模式创建一个文件夹list1.txt
f.write('-'.join(lt)) #把通过join函数处理过的数据写入列表
f.close()
其输出结果为生成一新的文件夹,写入内容如下:
list1.txt:
lt=['abc','ABC','12345','666']
f=open(f'list2.txt','w',encoding='utf-8')#以w模式创建一个文件夹list2.txt
f.writelines(lt) #直接把列表内的数据全部连接起来写入文件list2.txt
f.close()
其输出结果为生成一新的文件夹,写入内容如下:
list2.txt: