如何更快地在文本文件中写入数字?
How to Write a Number in A Text File Faster?
我编写了一个程序,它需要 0.1092 秒来生成一个数字,但需要 787.26012 秒 =13 分钟来写入该数字 (3.81 MB) in/on 一个文本文件。
import time
import sys
import math
start = time.time()
input_file="First1_58MB_enwik9.txt"
with open(input_file, "rb") as file: #--> open file in binary read mode
byte_obj = file.read() #--> read all binary data
g=int.from_bytes( byte_obj, byteorder=sys.byteorder)
binary_dt=bin(g)
int_v=int(binary_dt,2)
length = math.ceil(math.log(int_v, 256))
res = int.to_bytes(int_v, length=length, byteorder='little', signed=False)
open("output_file_2.txt", "wb").write(res)
end = time.time()
print("Total time (in seconds) = ",(end - start))
#---------------------------
start = time.time()
with open("output_file_1.txt", 'w') as f:
f.write('%d' % g)
end = time.time()
print("Total time (in seconds) = ",(end - start))
有没有更快的方法在文本文件上写入这么大的数字?
此外,如果我将数字写入另一种类型的文件是否会更快,比如说我将数字写入二进制文件或不带扩展名的文件?
PS: 没有扩展名的文件术语是什么?
当我使用下面的代码时,我能够在一秒钟内生成 30mb 的文件。
s = "hey"*10000000 # multiply "hey" 10000000 times and then return the string
with open("output_file_1.txt", 'w') as f:
f.write(s)
是否有必要明确地告诉 python 我们正在写入 .txt 文件的对象是整数?如果没有,那么...
Consider g
as string instead of number and change your code to
f.write(g)
. And then check if you see time improvement.
我编写了一个程序,它需要 0.1092 秒来生成一个数字,但需要 787.26012 秒 =13 分钟来写入该数字 (3.81 MB) in/on 一个文本文件。
import time
import sys
import math
start = time.time()
input_file="First1_58MB_enwik9.txt"
with open(input_file, "rb") as file: #--> open file in binary read mode
byte_obj = file.read() #--> read all binary data
g=int.from_bytes( byte_obj, byteorder=sys.byteorder)
binary_dt=bin(g)
int_v=int(binary_dt,2)
length = math.ceil(math.log(int_v, 256))
res = int.to_bytes(int_v, length=length, byteorder='little', signed=False)
open("output_file_2.txt", "wb").write(res)
end = time.time()
print("Total time (in seconds) = ",(end - start))
#---------------------------
start = time.time()
with open("output_file_1.txt", 'w') as f:
f.write('%d' % g)
end = time.time()
print("Total time (in seconds) = ",(end - start))
有没有更快的方法在文本文件上写入这么大的数字?
此外,如果我将数字写入另一种类型的文件是否会更快,比如说我将数字写入二进制文件或不带扩展名的文件?
PS: 没有扩展名的文件术语是什么?
当我使用下面的代码时,我能够在一秒钟内生成 30mb 的文件。
s = "hey"*10000000 # multiply "hey" 10000000 times and then return the string
with open("output_file_1.txt", 'w') as f:
f.write(s)
是否有必要明确地告诉 python 我们正在写入 .txt 文件的对象是整数?如果没有,那么...
Consider
g
as string instead of number and change your code tof.write(g)
. And then check if you see time improvement.