الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

قراءة سطر اوسطور من ملف

بدأه fofo_last في 27 يونيو 2010 · 4 رد · 800 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي

انا لازلت ملخبط في قراءة سطر من ملف او سطور

وياريت لو حدا عندو كود يبين الفرق بينهم او اهمية كل واحد منهم ياريت يضيفه هنا

شوفو معي ده كود بسيط وبدي يطبعلي كل سطر مع رقمه من الملف الي عندي الي يحتوي فرضا 4 سطور

f=open('c:/myfiles/f.txt','r')
s=f.readlines()
c=len(s)
i=0
print 'the file conains ',c,'lines \n'
while i <=c :

     print 'the',i,'line','=',f.readline()
     i+=1

else:print 'the end'
f.close()

الي ينتج هو

the file conains 4 lines

the 0 line =

the 1 line =

the 2 line =

the 3 line =

the 4 line =

the end

يعني مابينزلي السطور فشو الغلط؟؟؟

#2

انت قريت السطور كلها اصلا ب readlines!

استبدل السطر دا

     print 'the',i,'line','=',f.readline()

ب

  print 'the',i,'line','=',s

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 27 يونيو 2010 في 16:58

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3
ahmed_youssef كتب:

انت قريت السطور كلها اصلا ب readlines!

استبدل السطر دا

     print 'the',i,'line','=',f.readline()

ب

  print 'the',i,'line','=',s

سويت الي قتلي عليه بس تطلع رسالة انه

list index out of the range

ع هاالسطر؟؟؟

#4

غير شرط اللوب الى i < c

لكن الافضل هو اتباع الاسلوب البايثوني في الدوران على المصفوفيات

for index, item in enumerate(my_list):
    print index, item

بعض الشرح:

الطريقة العادية للدوران على اي مصفوفة هي for item in list

مثلا:

file = open("filename")
lines = file.readlines()
for line in lines:
    print "line:", line

لكن بهذه الطريقة لن نحصل على الـ index الخاص بكل عنصر،

اذا اردنا الـ index نستخدم فنكشن اسمه enumerate و هو فنكشن ياخذ مصفوفة و يرجع مصفوفة من tuples

مثال:

اذا ادخلنا له

['this', 'is', 'a', 'list']

يعطينا:

[(0, 'this'), (1, 'is'), (2, 'a'), (3, 'list')]

(طبعا هذا الشرح مبسط بعض الشيء و لكنه يفي بالغرض)

و يمكننا فعل التالي مثلا:

a = ["this", "is", "a", "list"]
for index, item in enumerate(a):
    print index, item

و سيكون الناتج:

 
0 this
1 is
2 a
3 list

و بتطبيق هذه الفكرة على قرائة اسطر من ملف:

file = open("myfile")
lines = file.readlines()
for number, line in enumerate(lines):
    print "line number:", number, " is:", line
print "Total number of lines:", len(lines)

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 28 يونيو 2010 في 02:24

#5

تم تنفيدها مع شرط

بس ليش السطر التالت مانفد؟؟؟ مع انه c=3 اسطر ولو وضعت c اقل اويساوي يطلع غلط؟؟؟بدي افهمها ؟؟؟

the file conains 3 lines

the 1 line = hello

the 2 line = good nigth

the end

اخي حسن رح اجرب طريقتك شكرا للاضافه جزاك الله الجنة انت والاخ احمد

fofo_last كتب:

تم تنفيدها مع شرط

بس ليش السطر التالت مانفد؟؟؟ مع انه c=3 اسطر ولو وضعت c اقل اويساوي يطلع غلط؟؟؟بدي افهمها ؟؟؟

the file conains 3 lines

the 1 line = hello

the 2 line = good nigth

the end

اخي حسن رح اجرب طريقتك شكرا للاضافه جزاك الله الجنة انت والاخ احمد

\\عرفت الاجابة العداد كان يبدا بواحد ولدى بياخد عنصر اتنين في اندكس

وعشان انا ابي الاول لازم اخلي الاندكس يبدا من صفر

وكدا حلت

مواضيع مشابهة