python二进制读取和普通读取文本文件的区别

        Python读写文件时,二进制方式和普通方式的效率区别取决于文件的类型和大小。

1、写入文本文件

示例代码1:  【小文件】

import time
import random

random_str = ['*', '-', '+', '#', 'a', 'b', 'c', 'd']
datas = ''
for i in range(1000):
    s = random.choice(random_str) * i * 10
    datas += s

start_time1 = time.time()
# 二进制方式写入文本文件
with open('./data/二进制方式写入.txt', 'bw') as f:
    f.write(datas.encode())

end_time1 = time.time()

start_time2 = time.time()
# 普通方式写入文本文件
with open('./data/普通方式写入.txt', 'w') as f:
    f.write(datas)
end_time2 = time.time()

print("二进制方式写入耗时:", end_time1 - start_time1)
print("普通方式写入耗时:", end_time2 - start_time2)

运行结果:

示例代码2:  【中大文件】

import time
import random

random_str = ['*', '-', '+', '#', 'a', 'b', 'c', 'd']
datas = ''
for i in range(1000):
    s = random.choice(random_str) * i * 250
    datas += s

start_time1 = time.time()
# 二进制方式写入文本文件
with open('./data/二进制方式写入.txt', 'bw') as f:
    f.write(datas.encode())

end_time1 = time.time()

start_time2 = time.time()
# 普通方式写入文本文件
with open('./data/普通方式写入.txt', 'w') as f:
    f.write(datas)
end_time2 = time.time()

print("二进制方式写入耗时:", end_time1 - start_time1)
print("普通方式写入耗时:", end_time2 - start_time2)

运行结果:

示例代码3:   【大文件】

import time
import random

random_str = ['*', '-', '+', '#', 'a', 'b', 'c', 'd']
datas = ''
for i in range(1000):
    s = random.choice(random_str) * i * 2000
    datas += s

start_time1 = time.time()
# 二进制方式写入文本文件
with open('./data/二进制方式写入.txt', 'bw') as f:
    f.write(datas.encode())

end_time1 = time.time()

start_time2 = time.time()
# 普通方式写入文本文件
with open('./data/普通方式写入.txt', 'w') as f:
    f.write(datas)
end_time2 = time.time()

print("二进制方式写入耗时:", end_time1 - start_time1)
print("普通方式写入耗时:", end_time2 - start_time2)

运行结果:

2、读取文本文件

示例代码1: 【小文件】【4.76M】

import time

start_time1 = time.time()
# 二进制方式读取文本文件
with open('./data/二进制方式写入.txt', 'br') as f:
    f.read()

end_time1 = time.time()

start_time2 = time.time()
# 普通方式读取文本文件
with open('./data/普通方式写入.txt', 'r') as f:
    f.read()
end_time2 = time.time()

print("二进制方式读取耗时:", end_time1 - start_time1)
print("普通方式读取耗时:", end_time2 - start_time2)

运行结果:

示例代码2: 【中大文件】【119M】

import time

start_time1 = time.time()
# 二进制方式读取文本文件
with open('./data/二进制方式写入.txt', 'br') as f:
    f.read()

end_time1 = time.time()

start_time2 = time.time()
# 普通方式读取文本文件
with open('./data/普通方式写入.txt', 'r') as f:
    f.read()
end_time2 = time.time()

print("二进制方式读取耗时:", end_time1 - start_time1)
print("普通方式读取耗时:", end_time2 - start_time2)

运行结果:

示例代码3: 【大文件】【952M】

import time

start_time1 = time.time()
# 二进制方式读取文本文件
with open('./data/二进制方式写入.txt', 'br') as f:
    f.read()

end_time1 = time.time()

start_time2 = time.time()
# 普通方式读取文本文件
with open('./data/普通方式写入.txt', 'r') as f:
    f.read()
end_time2 = time.time()

print("二进制方式读取耗时:", end_time1 - start_time1)
print("普通方式读取耗时:", end_time2 - start_time2)

运行结果:

3、总结

        对于小文件(几百KB以下),普通读写方式和二进制方式的效率差异不大。但是对于大文件(几百MB以上),二进制方式的效率要高于普通读写方式。这是因为二进制方式可以一次读取或写入大量数据,而普通读写方式需要逐行读取或写入数据。

        此外,对于二进制文件(如图片、视频、音频等),使用二进制方式读写可以保证文件的完整性和正确性。而对于文本文件,使用普通读写方式可以方便地进行文本处理和编辑。

        因此,选择何种方式读写文件应该根据具体情况而定。对于小文件和文本文件,可以使用普通读写方式;对于大文件和二进制文件,使用二进制方式可以提高效率和保证文件的完整性。

猜你喜欢

转载自blog.csdn.net/weixin_44799217/article/details/130977909