day10-文件操作

1.对文件的操作流程

  • 打开文件,得到文件句柄并且赋值给一个变量
  • 通过句柄对文件进操作
  • 关闭文件

2.文件的打开

在Python中,使用open函数,可以打开或者创建一个文件

f = open(‘test.txt’,mode=’r’,encoding = ‘utf-8’)

文件打开的访问模式如下

说明:

访问模式

说明

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

3.文件的关闭

使用close()函数关闭文件。

4.向文件中写入数据

要向文件中写入数据,可以使用write()函数进行写入操作。且写入的对象必须是str类型的。

f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

5.读取文件内容

5.1 read()函数

Python中使用read(num)函数从文件中读取数据,函数中的num参数表示读取num字节的内容。如果不传入,表示读取全部内容。

  • 如果open是打开一个文件,那么可以不用书写打开的模式,只写 open('test.txt')
  • 如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的
f = open('test.txt', 'r',encoding='utf-8')
content = f.readable()
if content:
    data = f.read(333)
    print(len(data))
    print(data)
f.close()
 

5.2 readline()函数

作用是读取文件中的一行。

示例:读取文件中的50行内容。

f = open('test.txt', 'r',encoding='utf-8')
for i in range(50):
    data = f.readline()
    if len(data) > 0:
        print(data)
    else:
        pass

5.3 readlines()函数

就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素.

f = open('test1.txt', 'r',encoding='utf-8')
datas = f.readlines()
print(datas)
# ['hello world, i am here!\n', 'wl,wwds']

for data in datas:
    print(data.replace('\n',''))
# hello world, i am here!
# wl,wwds

5.4 文件备份练习

输入文件的名字,然后程序自动完成对文件进行备份

oldFileName = input("请输入要拷贝的文件名字:")
oldFile = open(oldFileName,'r')
 
# 如果打开文件
if oldFile:
    # 提取文件的后缀
    fileFlagNum = oldFileName.rfind('.')
    if fileFlagNum > 0:
        fileFlag = oldFileName[fileFlagNum:]
 
    # 组织新的文件名字
    newFileName = oldFileName[:fileFlagNum] + '[复件]' + fileFlag
 
    # 创建新文件
    newFile = open(newFileName, 'w')
 
    # 把旧文件中的数据,一行一行的进行复制到新文件中
    for lineContent in oldFile.readlines():
        newFile.write(lineContent)
 
    # 关闭文件
    oldFile.close()
    newFile.close()

6.文件的定位读写

6.1 获取当前文件的读写位置

  • f.tell—在读写文件的过程中,获取当前读写的位置。
# 打开一个已经存在的文件

f = open("test.txt", "r",encoding='utf-8')

str = f.read(3)
print("读取的数据是 : ", str)
# 读取的数据是 :  htt

# 查找当前位置
pos = f.tell()
print("当前文件位置 : ", pos)
# 当前文件位置 :  3

str = f.read(3)
print("读取的数据是 : ", str)
# 读取的数据是 :  ps:

# 查找当前位置
pos = f.tell()
print("当前文件位置 : ", pos)
# 当前文件位置 :  6

f.close()

6.2 定位到文件中的某个位置

如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()

seek(offset, from)有2个参数

1.offset:偏移量

2.from:方向

  • 0:表示文件开头
  • 1:表示当前位置
  • 2:表示文件末尾

示例:把位置设置为:离文件末尾,3字节处

# 打开一个已经存在的文件
f = open("test.txt", "r")
 
# 查找当前位置
pos = f.tell()
print("当前文件位置 : ", pos)
 
# 重新设置位置
f.seek(-3,2)
 
# 读取到的数据为:文件最后3个字节数据
str = f.read()
print("读取的数据是 : ", str)
 
f.close()

猜你喜欢

转载自www.cnblogs.com/wl443587/p/10089439.html