Python自动化之文件I/O操作

一、打开和关闭文件:
  Python提供了必要的函数和方法进行默认情况下的文件基本操作,我们可以使用file作为对象做大部分的文件操作。
  
open函数:
方式一:

file object = open(file_name [, access_mode][, buffering])

方式二:

with open(file_name [, access_mode][, buffering]) as f:

各个参数细节如下:
  1)file_name:file_name变量是一个包含了你要访问的文件名称的字符串值;
  2)access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r);
  3)buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认;

不同模式打开文件的完全列表:

模式描述
b二进制模式
+打开一个文件进行更新(可读可写)
r以只读的方式打开文件,文件的指针会放在文件的开头,这是默认模式
rb以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这是默认模式,一般用于非文本文件如图片等
r+打开一个文件用于读写,文件指针将会放在文件的开头
rb+以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头,一般用于非文本文件如图片等
w打开一个文件只用于写入,如果该文件已存在则打开文件,并从头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

在这里插入图片描述
二、File对象的属性
  一个文件被打开之后,你会有一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:

属性描述
file.colsed如果文件已被关闭返回true,否则返回false
file.mode返回被打开文件的访问模式
file.name返回文件的名称

例子:

with open("test.txt","w+",encoding="UTF-8") as f:
   ...:     print("文件名:",f.name)
   ...:     print("文件是否已关闭:",f.closed)
   ...:     print("文件的访问模式:",f.mode)

文件名: test.txt
文件是否已关闭: False
文件的访问模式: w+

三、File对象的方法
close()方法:刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

 with open("test.txt","w+",encoding="UTF-8") as f:
    ...:     print("文件名:",f.name)
    ...:     f.close()
    ...:     print("文件是否已关闭:",f.closed)
    ...:     print("文件的访问模式:",f.mode)

文件名: test.txt
文件是否已关闭: True
文件的访问模式: w+

write()方法:write()方法可将任何字符串写入一个打开的文件(如果文件不存在则会创建此文件,如果文件存在则会覆盖文件之前的内容)。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符(’\n’)。

with open("test.txt","w+",encoding="UTF-8") as f:
    ...:     f.write("Hello Python!\n")
    ...:     f.write("I am Python")
    ...:     f.close()

read()方法:read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

 with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.read()
    ...:     print(data)
    ...:     f.close()
Hello Python!
I am Python

=== 在read()中加入指定的数字可以只读取指定的字节数 ===
 with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.read(15)
    ...:     print(data)
    ...:     f.close()
Hello Python!
I

readline()方法:只读取一行的内容或指定的文件字节数。

 with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.readline()
    ...:     print(data)
    ...:     f.close()
Hello Python!

=== 读取一行中的指定字节数 ===
 with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.readline(8)
    ...:     print(data)
    ...:     f.close()
Hello Py

readlines()方法:读取文件的所有内容,并以一个列表的方式返回文件内容。

with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.readlines()
    ...:     print(data)
    ...:     f.close()
['Hello Python!\n', 'I am Python']

tell()方法:返回文件的当前指针位置。

 with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.read(5)
    ...:     print(data)
    ...:     print(f.tell())
    ...:     f.close()

Hello
5

seek()方法:修改文件的指针的当前位置为指定的位置。

with open("test.txt","r+",encoding="UTF-8") as f:
    ...:     data = f.read(5)
    ...:     print(data)
    ...:     f.seek(6)
    ...:     print(f.tell())
    ...:     f.close()

Hello
6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值