Как написать число в текстовом файле быстрее? - PullRequest
0 голосов
/ 23 марта 2020

Я написал программу, для создания которой требуется 0,1092 секунды, но 787,26012 секунды = 13 минут для записи этого числа (3,81 МБ) в / в текстовый файл.

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: Что такое термин для файла, который не имеет расширения?

1 Ответ

0 голосов
/ 24 марта 2020

Я смог сгенерировать файл размером 30 Мб за секунду, когда использовал приведенный ниже код.

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, является целым числом ? Если нет, тогда ...

Рассматривайте g как строку вместо числа и измените свой код на f.write(g). А затем проверьте, видите ли вы улучшение времени.

...