复制文件
我们先创建一个文件。
# 创建文件123
hello 1
hello 2
hello 3
#1.打开文件
file_read=open("123")
file_write=open("123复件","w")
#2.读写文件
text=file_read.read()
file_write.write(text)
#3.关闭文件
file_read.close()
file_write.close()
我们先打开了文件123,之后又打开了一个新文件叫做123复件。
我们从第一个文件中读取了文件的内容之后又从新的文件进行输出。
最后分别关闭两个文件。
复制大文件
当我们要读取的文件非常非常的没有办法一次性读完,那么我们就不能使用简单的复制方法进行复制打文件了。
我们可以打开这个大文件,逐行读取文件的内容,并按顺序写入到另外一个文件。
#1.打开文件
file_read=open("123")
file_write=open("123复件","w")
#2.读写文件
while True:
#读取一行内容
text=file_read.readline()
#判断是否读取到内容
if not text:
break
file_write.write(text)
#3.关闭文件
file_read.close()
file_write.close()
在打开文件和关闭文件的代码中我们没有修改,我们进行修改的是将read方法替换成了readline,之后我们使用了一个条件判断语句,如果没有读到内容就进行break,如果读到内容就进行输出。
我们可以使用tell()方法返回文件指针的当前位置
使用seek()方法可以更改文件指针的位置。
总结
下面我们队文件对象的常用方法进行一个总结。
方法 | 功能描述 |
---|---|
close() | 吧缓冲区内容写入文件 |
fileno | () 返回文件描述符(整数) |
flush() | 把缓冲区内容写入文件,但不关闭文件对象 |
read(n) | 最多读取并返回n个字符。如果n为负数或为空,则读取文件的所有内容 |
readline() | 读取并返回文件的一行 |
readlines() | 读取并返回文件的行列表 |
seek(offset,form) | 将文件指针移动到新的位置,offset表示相对于form的偏移量。form的取值0/1、2分别代表文件头、当前位置和文件尾。 |
seekable | 如果文件支持随机访问,则返回True |
tell() | 返回文件指针的当前位置 |
truncate(n=None) | 只保留文件的前n个字符,如果未指定n,则只保留文件头到指针的当前位置 |
writable | 测试当前文件是否可写 |
write(s) | 将字符串s写入文件并返回写入的字符数 |
writelines | 将列表lines写入文件 |