Saya telah menulis sebuah program yang membutuhkan 0,1092 detik untuk menghasilkan angka tetapi 787.26012 detik =13 menit untuk menulis angka itu (3,81 MB) di/pada file teks.

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))

Apakah ada cara yang lebih cepat untuk menulis jumlah besar pada file teks?

Juga, jika saya menulis nomor dalam jenis file lain apakah akan lebih cepat, katakanlah jika saya menulis nomor file biner atau file tanpa ekstensi?

PS: Apa istilah untuk file yang tidak memiliki ekstensi?

0
Mike SQ 23 Maret 2020, 23:55

1 menjawab

Jawaban Terbaik

Saya dapat menghasilkan file 30mb dalam satu detik ketika saya menggunakan kode di bawah ini.

s = "hey"*10000000 # multiply "hey" 10000000 times and then return the string
with open("output_file_1.txt", 'w') as f:
    f.write(s)

Apakah perlu memberi tahu python secara eksplisit bahwa objek yang kita tulis ke file .txt adalah bilangan bulat? Jika tidak, maka...

Pertimbangkan g sebagai string alih-alih angka dan ubah kode Anda menjadi f.write(g). Dan kemudian periksa apakah Anda melihat peningkatan waktu.

0
gsb22 23 Maret 2020, 21:42