- python文件读写
- 1 打开文件
- 2 关闭文件
- 2.1 在with as 代码块中关闭文件
- 3 读写文本文件
- 4 读写二进制文件
- 5 python读写文件应用
open(file, mode='r', encoding=None, errors=None)
2 关闭文件1.file参数,用于表示要打开的文件, 可以是字符串或整数。 如果file是字符串, 则表示文件名, 文件名既可以是当前目录的相对路径, 也可以是绝对路径; 如果file是整数, 则表示一个已经打开的文件。
2.mode参数用于设置文件打开模式, 用字符串表示, 例如rb表示以只读模式打开二进制文件。 用于设置文件打开模式的字符串中的每一个字符都表示不同的含义, 对这些字符的具体说明如下。
t: 以文本文件模式打开文件。
b: 以二进制文件模式打开文件。
r: 以只读模式打开文件。
w: 以只写模式打开文件, 不能读内容。 如果文件不存在, 则创建文件; 如果文件存在, 则覆盖文件的内容。
x: 以独占创建模式打开文件, 如果文件不存在, 则创建并以写入模式打开; 如果文件已存在, 则引发FileExistsError异常。
a: 以追加模式打开文件, 不能读内容。 如果文件不存在, 则创建文件; 如果文件存在, 则在文件末尾追加。
+: 以更新( 读写) 模式打开文件, 必须与r、 w或a组合使用, 才能设置文件为读写模式。
3.encoding用来指定打开文件时的文件编码, 默认是UTF-8编码, 主要用于打开文本文件。
4.errors参数用来指定在文本文件发生编码错误时如何处理。 推荐errors参数的取值为’ignore’, 表示在遇到编码错误时忽略该错误, 程序会继续执行, 不会退出。
在打开文件后, 如果不再使用该文件, 则应该将其关闭, 会用到close()方法。2.1 在with as 代码块中关闭文件
with open(f_name) as f: content = f.read() print(content)
with as提供了一个代码块, 在as后面声明一个资源变量, 在with as代码块结束之后自动释放资源。3 读写文本文件
read(size=-1) : 从文件中读取字符串, size限制读取的字符数, size=-1指对读取的字符数没有限制。 readline(size=-1) : 在读取到换行符或文件尾时返回单行字符串。 如果已经到文件尾, 则返回一个空字符串。 size是限制读取的字符数,size=-1表示没有限制。 readlines() : 读取文件数据到一个字符串列表中, 每一行数据都是列表的一个元素。 write(s) : 将字符串s写入文件中, 并返回写入的字符数。 writelines(lines) : 向文件中写入一个字符串列表。 不添加行分隔符, 因此通常为每一行末尾都提供行分隔符。 flush() : 刷新写缓冲区, 在文件没有关闭的情况下将数据写入文件中。4 读写二进制文件
read(size=-1) : 从文件中读取字节, size限制读取的字节数, 如果size=-1, 则读取全部字节。 readline(size=-1) : 从文件中读取并返回一行。 size是限制读取的行数, 如果size=-1, 则没有限制。 readlines() : 读取文件数据到一个字节列表中, 每一行数据都是列表的一个元素。 write(b) : 写入b字节, 并返回写入的字节数。 writelines(lines) : 向文件中写入一个字节列表。 不添加行分隔符, 因此通常为每一行末尾都提供行分隔符。 flush( ) : 刷新写缓冲区, 在文件没有关闭的情况下将数据写入文件中。5 python读写文件应用
改变yolo数据集标签类别
# 读取txt文件将每行第一个数取反
def rename(path):
files = os.listdir(path)
for file in files:
with open(os.path.join(path, file), 'r') as f:
orign_lines = f.readlines()
len(orign_lines)
list = []
with open(os.path.join(path, file), 'w') as out:
for i in range(len(orign_lines)):
list.append(orign_lines[i])
data = list[i].split()
if data[0] == '1':
data[0] = '0'
else:
data[0] = '1'
s = data[0] + ' ' + data[1] + ' ' + data[2] + ' ' + data[3] + ' ' + data[4]
s = str(s)
out.write(s + 'n')



