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

برمجة سكربت إضافة قائمة إلى قائمة أخرى ونتاج في ملف خارجي

بدأه python.sc في 6 سبتمبر 2012 · 11 رد · 1,106 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أولا أود أن أشكر كل من ساهم معي ومع إخوننا أيضا في الموضوع السابق برمجة سكربت حذف بعض الكلمات

فالله أعلم كم إستفدنا من النقاشات التي جرت داخل الموضوع,فتبارك الله فيكم وفي والديكم وسدد خطاكم

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

وهو سكربت يقوم بالتالي:

عندي ملف إسمه email.txt وملف password.txt

ملف الإميل فيه إميلات وملف الباسورد فيه كلمات السر

حسنا,أريد من السكربت أن يجمع بين الملفين حيث في الناتج أتحصل على ملف بإسم

result.txt يحتوي على Email:Password مفصولين بنقطتين :

لا أريد أن تعطوني السكربت كاملا فقط نقاط نراجعا وبواسطتها نقدر نبرمج بها السكربت المطلوب

وبمساعدتكم وصبركم معانا إلى أن نبرمج السكربت

وكبداية أبدئها أنا

import sys
email = open('email.txt', 'r')
password = open('password.txt', 'r')
e = email.readline()
p = password.readline()

...............

#2

المحاولة الأولى : وضع الإيميلات في قائمة و الباسووردات في قائمة

#!/usr/bin/python
email = open('email.txt', 'r')
passw = open('password.txt', 'r')

email_list = []
passw_list = []

for em in email :
    email_list.append(em)

for psw in passw :
    passw_list.append(psw)

print email_list
print passw_list
#3

شكرا أخي

ولكن سؤال ما الفائدة من وضعها في ليست؟

وهل وضعها في ليست هو الحل أمثل؟

وما الخطوة التالية بعد وضعها في الليست

#4
python.sc كتب:

شكرا أخي

ولكن سؤال ما الفائدة من وضعها في ليست؟

وهل وضعها في ليست هو الحل أمثل؟

وما الخطوة التالية بعد وضعها في الليست

الخطوة التالية هي إنشاء قاموس مفاتيحه إيميلات (مأخوذة من قائمة إيميلات) و قيمه باسووردات (مأخوذة من قائمة باسووردات).

والخطوة الثالثة هي وضع عناصر القاموس في الملف result.txt.

إذا كانت هناك طريقة أفظل فالباب مفتوح.

#5

جاري العمل عليه

غدا عندما أرجع من أعمل أبدأ به

جزاك الله خيرا

#6

أضن أن الفكرة السابقة سيئة.

هذا هو السكربت المطلوب :

#!/usr/bin/python
email = open('email.txt', 'r')
passw = open('password.txt', 'r')
res = open('result.txt', 'a')
while True :
    em = email.readline()
    psw = passw.readline()
    if not em :
        break
    else :
        result = '%s:%s' % (em[0 : len(em) - 1], psw[0 : len(psw)])
        res.write(result)
email.close()
passw.close()
res.close()
#7

ممكن شرح مفهوم لهذا الجزء من الكود

if not em :

break

else :

result = '%s:%s' % (em[0 : len(em) - 1], psw[0 : len(psw)])

res.write(result)

email.close()

passw.close()

res.close()

#8
احمد وسام كتب:

ممكن شرح مفهوم لهذا الجزء من الكود

if not em :

break

else :

result = '%s:%s' % (em[0 : len(em) - 1], psw[0 : len(psw)])

res.write(result)

email.close()

passw.close()

res.close()

سأشرح لك الكود كاملا صديقي.

email = open('email.txt', 'r')

فتح الملف email.txt للقراءة فقط.

passw = open('password.txt', 'r')

فتح الملف password.txt للقراءة فقط.

res = open('result.txt', 'a')

فتح الملف result.txt لإظافة محتويات عند نهايته.

while True :

العبارة True ستجعل الحلقة لا تتوقف أبدا الى إذا إستخدمنا العبارة break لإيقافها.

em = email.readline()

قراءة سطر من الملف النصي email.txt المعبر عنه ب email، و تخزينه في المتغير em.

psw = passw.readline()

قراءة سطر من الملف النصي password.txt المعبر عنه ب passw، و تخزينه في المتغير psw.

if not em :
    break

إذا لم يكن هناك سطر (em) (هذا يعني أن الملف إنتهى)، تتوقف الحلقة لوجود العبارة break.

else :
    result = '%s:%s' % (em[0 : len(em) - 1], psw[0 : len(psw)])
    res.write(result)

أما إذا حدث العكس (يوجد سطر و لم ينتهي الملف)، يتم تنفيذ البلوك الخاص ب else.

email.close()
passw.close()
res.close()

غلق الملفات الثلاثة.

أظن أنك لم تفهم هذا السطر بالتحديد :

result = '%s:%s' % (em[0 : len(em) - 1], psw[0 : len(psw)])

سأشرحه لك بمثال تفاعلي بسيط :

>>> MyStr = 'Septembre'
>>> print '%s' % (MyStr[0 : 3])
Sep

أردنا طباعة الأحرف الثلاثة الأولى فقط من المتغير MyStr، لذا قمنا بما يلي :

print '%s' % MyStr[عدد الأحرف المراد طبعها ,الرتبة التي نريد أن نبدأ بها]

راجع درس الملفات

#9

ويمكنك اضافة قائمة الى اخرى عن طريق هذه الجزء من الكود

email = open('email.txt', 'r')
passw = open('password.txt', 'r')
res = open('result.txt', 'a')
while True :
    em = email.readline()
    psw = passw.readline()
    if not em :
        break
    else :
        em+=psw
        res.write(em)
email.close()
passw.close()
res.close()

اتمنى فهمت

salah.jpg

#10

جزيل الشكر لك اخي محمد بارك الله بيك على شرحك الجيد

#11

جزاكم الله خيرا وتبارك الله فيكم جميعا

الآن فهمت كيف يمكن إستخدام العبارة if وبريك وكيف يمكن توظيفهما

جزاكم الله خيرا وبارك الله في والديكم وسدد الله خطاكم

لم أستوعب هذا الجزء من الكود

 len(em) - 1]
#12
python.sc كتب:

جزاكم الله خيرا وتبارك الله فيكم جميعا

الآن فهمت كيف يمكن إستخدام العبارة if وبريك وكيف يمكن توظيفهما

جزاكم الله خيرا وبارك الله في والديكم وسدد الله خطاكم

لم أستوعب هذا الجزء من الكود

 len(em) - 1]

الدالة ()len

الدالة len مرتبطة بالحاويات،وتختلف وضيفتها حسب المعيار الذي يمرر اليها، فإذا مررنا لها متغير نصي تحسب عدد الحروف فيه، وإذا مررنا لها list أو tuple أو dict تحسب عدد العناصر فيها.

مثلا :

>>> name = 'Mohamed'
>>> len(name)
7
>>> print name[0 : len(name)]
Mohamed
>>> print name[0 : 7]
Mohamed

لكن لماذا أنقصنا واحد من (len(em

الدالة readline تقرأ سطر من الملف ثم تظيف له علامة مهمتها العودة الى سطر جديد

em = email.readline()

لذا حذفنا هذه العلامة بإنقاص واحد من (len(em

em[0 : len(em) - 1]

نفترض أن الملف email.txt يحتوي على الإيميلات التالية :

test1111@gmail.com
test2222@gmail.com
test3333@gmail.com
test4444@gmail.com

نفترض أن الملف password.txt يحتوي على الباسووردات التالية :

test1111
test2222
test3333
test4444

وهذا هو السكربت بدون إنقاص 1 من (len(em :

#!/usr/bin/python
email = open('email.txt', 'r')
passw = open('password.txt', 'r')
res = open('result.txt', 'a')
while True :
    em = email.readline()
    psw = passw.readline()
    if not em :
        break
    else :
        result = '%s:%s' % (em[0 : len(em)], psw[0 : len(psw)])
        res.write(result)
email.close()
passw.close()
res.close()

ستكون محتويات الملف result.txt كالتالي :

test1111@gmail.com
:test1111
test2222@gmail.com
:test2222
test3333@gmail.com
:test3333
test4444@gmail.com
:test4444

أرجوا أنني أوصلت الفكرة

1

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…