Wednesday, 6 May 2015

10.1. Menyimpan Objek dalam File

Untuk menulikan objek-objek python kedalam file txt (penggunaan perintah 'open' selalu menggunakan string) tidak selalu secara otomatis memformatnya sehingga semua data akan ditulis secara memanjang tanpa ada baris baru.  
  1. >>> lokasi='c:/test2.txt' # string lokasi file
  2. >>> a,b,c=10,11,12        # int a,b,c
  3. >>> vstring='hello'        # string
  4. >>> vDict={'da':20, 'db':21, 'dc':22} #dictionary
  5. >>> vList=[30,31,32]     #list
  6. >>> vfile=open(lokasi,'w')   
  7. >>> vfile.write('%s,%s,%s\n' %(a,b,c))
  8. 9
  9. >>> vfile.write(vstring+'\n')
  10. 6
  11. >>> vfile.write(str(vDict)+'\n')
  12. 31
  13. >>> vfile.write(str(vList)+'\n')
  14. 13
  15. >>> vfile.close()   # tulis data kedalam file dan tutup
  16. >>> vfileRead=open(lokasi)
  17. >>> vfileRead.readlines()
  18. ['10,11,12\n', 'hello\n', "{'da': 20, 'dc': 22, 'db': 21}\n", '[30, 31, 32]\n']
  19. >>> 

Sekarang file yang kita buat berada di drive c, bernama test2.txt, lalu kita cek file tersebut dengan notepad. Bisa juga kita buka dengan python menggunakan perintan 'open' seperti perintah pada baris ke 16 dan 17. Bisa pula kita langsung menjadikannya sebuah string dengan perintah 'open'.
  1. >>> vfile=open(lokasi).read()
  2. >>> vfile
  3. "10,11,12\nhello\n{'da': 20, 'dc': 22, 'db': 21}\n[30, 31, 32]\n"
  4. >>> 

Bila kita ingin menbaca perbaris:
  1. >>> vfile=open(lokasi)
  2. >>> baris1=vfile.readline()
  3. >>> baris1
  4. '10,11,12\n'
  5. >>> baris1.rstrip()  #menhapus akhir dari baris
  6. '10,11,12'
  7. >>> baris1
  8. '10,11,12\n'
  9. >>> baris2=vfile.readline()
  10. >>> baris2.rstrip()
  11. 'hello'
  12. >>>

Pada variable baris1 (string '10,11,12') adalah satu variable string. bila kita ingin menggunakan salah satunya saja, kita harus memisahkan terlebih dahulu.
  1. >>> pisahString=baris1.split(',')
  2. >>> pisahString
  3. ['10', '11', '12\n']

Sekarang kita memiliki variable list yang bernama 'pisahString' (masih berbentuk string), kita tinggal memanggil index list yang kita perlukan.
  1. >>> vInt1=int(pisahString[0])
  2. >>> vInt1
  3. 10
  4. >>> vIntSemua=[int(x) for x in pisahString]
  5. >>> vIntSemua
  6. [10, 11, 12]
  7. >>> 

Pada baris ke-4 kita membuat variable list yang bernama 'vIntSemua' isinya integer, bukan string lagi. Dan kita tidak perlu menghapus dengan perintah 'rstrip' untuk menghapus karakter '\n', karena dengan 'int' dan beberapa fungsi konversi tidak memperhitungkan tempat kosong disekitar angka.

Sekarang kita mencoba untuk mengkonversikan list dan dictionary, dengan menggunakan perintah 'eval'

  1. >>> baris3=vfile.readline()
  2. >>> baris3
  3. "{'da': 20, 'dc': 22, 'db': 21}\n"
  4. >>> baris4=vfile.readline()
  5. >>> baris4
  6. '[30, 31, 32]\n'
  7. >>> vcampur=[baris3,baris4]
  8. >>> vcampur
  9. ["{'da': 20, 'dc': 22, 'db': 21}\n", '[30, 31, 32]\n']
  10. >>> eval(vcampur[0])
  11. {'da': 20, 'dc': 22, 'db': 21}
  12. >>> eval(vcampur[1])
  13. [30, 31, 32]
  14. >>> pisah=[eval(x) for x in vcampur]
  15. >>> pisah
  16. [{'da': 20, 'dc': 22, 'db': 21}, [30, 31, 32]]
  17. >>> 

Selanjutnya kurang lebih sama dengan yang pertama.

No comments:

Post a Comment