Python میں فائل کو پڑھنا اور لکھنا

تعارف

Python پروگرامرز سیریلائزڈ ڈیٹا ڈھانچے کے طور پر اریوں، فہرستوں اور لغات کو شدت سے استعمال کرتے ہیں۔ ان ڈیٹا ڈھانچے کو مستقل طور پر ذخیرہ کرنے کے لیے مناسب طریقے سے کام کرنے کے لیے فائل یا ڈیٹا بیس کی ضرورت ہوتی ہے۔

اس مضمون میں، ہم اس پر ایک نظر ڈالیں گے کہ فائل میں فہرست کیسے لکھی جائے، اور اس فہرست کو میموری میں کیسے پڑھا جائے۔

کرنے کے لئے فائل میں ڈیٹا لکھیں۔، اور فائل سے ڈیٹا پڑھیں، Python پروگرامنگ زبان معیاری طریقے پیش کرتی ہے۔ write() اور read() ایک ہی لائن سے نمٹنے کے لیے، اسی طرح writelines() اور readlines() متعدد لائنوں سے نمٹنے کے لیے۔ مزید برآں، دونوں pickle اور json ماڈیولز سیریلائزڈ ڈیٹا سیٹ سے نمٹنے کے ہوشیار طریقوں کی بھی اجازت دیتے ہیں۔

یہاں پڑھیں () اور لکھیں () طریقے

حروف کے ساتھ نمٹنے کے لئے (ڈور) بنیادی read() اور write() طریقے بہترین کام کرتے ہیں۔ اس طرح کی فہرست کو فائل میں لائن کے لحاظ سے محفوظ کرنا listfile.txt مندرجہ ذیل کے طور پر کیا جا سکتا ہے:


places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.txt', 'w') as filehandle:
    for listitem in places:
        filehandle.write(f'{listitem}n')

۔ listitem ایک لائن وقفے سے بڑھایا جاتا ہے۔ "n"، سب سے پہلے، اور پھر آؤٹ پٹ فائل میں محفوظ کیا جاتا ہے۔ اب ہم فائل سے پوری فہرست کو پڑھنے کے طریقہ پر ایک نظر ڈال سکتے ہیں۔ listfile.txt یادداشت میں واپس:


places = []


with open('listfile.txt', 'r') as filehandle:
    for line in filehandle:
        
        curr_place = line[:-1]
        
        places.append(curr_place)

ذہن میں رکھیں کہ آپ کو سٹرنگ کے آخر سے لائن بریک کو ہٹانے کی ضرورت ہوگی۔ اس صورت میں، یہ ہماری مدد کرتا ہے کہ Python سٹرنگز پر بھی لسٹ آپریشنز کی اجازت دیتا ہے۔ یہ ہٹانا صرف سٹرنگ پر ہی لسٹ آپریشن کے طور پر کیا جاتا ہے، جو آخری عنصر کے علاوہ سب کچھ رکھتا ہے۔ یہ عنصر کردار پر مشتمل ہے۔ "n" جو UNIX/Linux سسٹم پر لائن بریک کی نمائندگی کرتا ہے۔

یہاں تحریری خطوط () اور ریڈ لائنز() طریقے

جیسا کہ اس مضمون کے شروع میں ذکر کیا گیا ہے، ازگر میں دو طریقے بھی شامل ہیں- writelines() اور readlines() - بالترتیب ایک قدم میں متعدد لائنیں لکھنا اور پڑھنا۔ آئیے پوری فہرست کو ڈسک پر موجود فائل میں لکھتے ہیں:


places_list = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.txt', 'w') as filehandle:
    filehandle.writelines(f"{place for place in places_list}n")

ڈسک پر موجود فائل سے پوری فہرست کو پڑھنے کے لیے ہمیں یہ کرنے کی ضرورت ہے:


places = []


with open('listfile.txt', 'r') as filehandle:
    filecontents = filehandle.readlines()
    for line in filecontents:
        
        curr_place = line[:-1]
        
        places.append(curr_place)

مندرجہ بالا کوڈ دیگر پروگرامنگ زبانوں سے مستعار ایک زیادہ روایتی نقطہ نظر کی پیروی کرتا ہے۔ آئیے اسے مزید لکھتے ہیں۔ پائتھونک طریقہ:


places = []


with open('listfile.txt', 'r') as filehandle:
    places = [current_place.rstrip() for current_place in filehandle.readlines()]

سب سے پہلے، فائل کا مواد بذریعہ پڑھا جاتا ہے۔ readlines(). دوسرا، ایک میں for ہر لائن سے لوپ لائن بریک کریکٹر کو استعمال کرکے ہٹا دیا جاتا ہے۔ rstrip() طریقہ سوم، سٹرنگ کو جگہوں کی فہرست میں ایک نئی فہرست آئٹم کے طور پر شامل کیا جاتا ہے۔

کوڈ سے پہلے کی فہرست کے مقابلے میں بہت زیادہ کمپیکٹ ہے، لیکن ابتدائی Python پروگرامرز کے لیے پڑھنا زیادہ مشکل ہو سکتا ہے۔

جابلب ماڈیول کا استعمال

ابتدائی طریقوں نے اب تک فہرست کو اس طرح ذخیرہ کرنے کی وضاحت کی ہے کہ انسان اب بھی اسے پڑھ سکتے ہیں - بالکل لفظی طور پر فائل میں ایک ترتیب وار فہرست۔ یہ سادہ رپورٹیں بنانے یا صارفین کے لیے مزید استعمال کرنے کے لیے برآمد فائلوں کو آؤٹ پٹ کرنے کے لیے بہت اچھا ہے، جیسے CSV فائلیں۔ تاہم – اگر آپ کا مقصد صرف ایک فہرست کو فائل میں سیریلائز کرنا ہے، جسے بعد میں لوڈ کیا جا سکتا ہے، تو اسے انسانی پڑھنے کے قابل فارمیٹ میں ذخیرہ کرنے کی ضرورت نہیں ہے۔

۔ joblib ماڈیول ازگر آبجیکٹ کو پھینکنے کا آسان ترین طریقہ فراہم کرتا ہے (واقعی کوئی بھی چیز ہو سکتی ہے):

import joblib

places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

joblib.dump(places, 'places.sav')

places = joblib.load('places.sav')
print(places) 

joblib ایک موثر فارمیٹ میں اشیاء کو سیریلائز کرنے اور بعد میں لوڈ کرنے کا سب سے آسان اور صاف ترین طریقہ ہے۔ آپ کسی بھی صوابدیدی شکل کو استعمال کر سکتے ہیں، جیسے .sav, .dataوغیرہ۔ اس سے کوئی فرق نہیں پڑتا - دونوں joblib اور متبادل جیسے pickle فائلوں کو ٹھیک پڑھ لیں گے۔

یہاں اچار ماڈیول

کے متبادل کے طور پر joblib، ہم استعمال کر سکتے ہیں۔ pickle! اس کی dump() طریقہ بائنری ڈیٹا اسٹریم کے طور پر فہرست کو مؤثر طریقے سے اسٹور کرتا ہے۔ سب سے پہلے، آؤٹ پٹ فائل listfile.data بائنری تحریر کے لیے کھولا گیا ہے ("wb")۔ دوم، فہرست کا استعمال کرتے ہوئے کھلی فائل میں ذخیرہ کیا جاتا ہے dump() طریقہ:

import pickle

places = ['Berlin', 'Cape Town', 'Sydney', 'Moscow']

with open('listfile.data', 'wb') as filehandle:
    
    pickle.dump(places, filehandle)

اگلے مرحلے کے طور پر، ہم فائل سے درج ذیل فہرست کو پڑھتے ہیں۔ سب سے پہلے، آؤٹ پٹ فائل listfile.data پڑھنے کے لیے بائنری کھولی جاتی ہے ("rb")۔ دوم، جگہوں کی فہرست فائل سے لوڈ کی جاتی ہے۔ load() طریقہ:

import pickle

with open('listfile.data', 'rb') as filehandle:
    
    placesList = pickle.load(filehandle)

یہاں دو مثالیں تار کے استعمال کو ظاہر کرتی ہیں۔ اگرچہ، pickle تمام قسم کے Python آبجیکٹ کے ساتھ کام کرتا ہے جیسے کہ سٹرنگز، نمبرز، سیلف ڈیفائنڈ ڈھانچے، اور ہر دوسرے بلٹ ان ڈیٹا سٹرکچر Python فراہم کرتا ہے۔

JSON فارمیٹ کا استعمال کرنا

بائنری ڈیٹا فارمیٹ pickle استعمال ازگر کے لیے مخصوص ہے۔ مختلف پروگراموں کے درمیان انٹرآپریبلٹی کو بہتر بنانے کے لیے جاوا اسکرپٹ آبجیکٹ نوٹیشن (JSON) استعمال میں آسان اور انسانی پڑھنے کے قابل اسکیما فراہم کرتا ہے، اور اس طرح فائلوں کو سیریلائز کرنے اور انہیں APIs پر شیئر کرنے کے لیے بہت مشہور ہوا۔

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

درج ذیل مثال سے پتہ چلتا ہے کہ کس طرح کا استعمال کرتے ہوئے آؤٹ پٹ فائل میں مخلوط متغیر اقسام کی فہرست لکھی جائے۔ JSON ماڈیول لکھنے کے لیے آؤٹ پٹ فائل کو کھولنے کے بعد، dump() طریقہ JSON اشارے کا استعمال کرتے ہوئے فائل میں بنیادی فہرست کو اسٹور کرتا ہے۔

import json


basic_list = [1, "Cape Town", 4.6]


with open('listfile.txt', 'w') as filehandle:
    json.dump(basic_list, filehandle)

آؤٹ پٹ فائل کے مواد کو میموری میں واپس پڑھنا اتنا ہی آسان ہے جتنا ڈیٹا لکھنا۔ سے متعلقہ طریقہ dump() نام ہے load():

import json


with open('listfile.txt', 'r') as filehandle:
    basic_list = json.load(filehandle)

نتیجہ

مختلف طریقے جو ہم نے اوپر دکھائے ہیں وہ سادہ تحریر/پڑھنے سے لے کر اچار اور JSON کا استعمال کرتے ہوئے بائنری اسٹریمز کے ذریعے ڈیٹا ڈمپنگ/لوڈ کرنے تک ہیں۔ یہ ایک فہرست کو مستقل طور پر ذخیرہ کرنے اور اسے دوبارہ میموری میں پڑھنے کو آسان بناتا ہے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse