انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: M4hdi در 16 بهمن 1392، 10:38 ب‌ظ

عنوان: مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: M4hdi در 16 بهمن 1392، 10:38 ب‌ظ
سلام دوستان !
من یه برنامه نوشتم که موقع اجرا ازت 2 تا عدد میگیره و اعداد بین اینارو نشون میده !
مثلا عدد اولی رو میزنی 1 و عدد دومی رو میزنی 20 و نتیجش این میشه که از 1 تا 20 زیر هم چاپ میکنه !
اما میخواستم یکم کاربردی ترش کنم ! میخوام بااستفاده از توابع : write و open یه کاری بکنم که بعد از وارد کردن اعداد خودش در یه فایل ذخیره کنه !
این سورس اولی که بدون مشکل هست و کارش فق نمایش دادنه :
#!/usr/bin/python
num1=input("Type First Number : ")
num2=input("Type Second Number : ")
while num1<num2 :
print num1
num1 +=1
if num1>num2 :
print "Please Type a True Number !"
else  :
print "Good Luck"

اینم سورس دومی که مشکل دار هست و کارشم گرفت اعداد و ذخیره ی اعداد بین :
#!/usr/bin/python
num1=input("Type First Number : ")
num2=input("Type Second Number : ")
while num1<num2 :
print num1
num1 +=1
m=open('test.txt','w')
m.write(num1)
m.close()
if num1>num2 :
print "Please Type a True Number !"
else  :
print "Good Luck"

الان کلا مشکلم اینه که در سورس دومی , مثلا بعد از اجرا وقتی عدد اول رو میزنی 1  و عدد دوم رو میزنی 50  این نرم افزار باید خودش  از 1 تا 50 رو چاپ کنه و همینطور باید از 1 تا 50 رو در فایلی به نام test.txt ذخیره کنه ! اما ارور میده  ](*,)
ممنون میشم دوستان کمکم کنن !
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: vandu در 17 بهمن 1392، 12:39 ق‌ظ
چیزی که به ذهنم میرسه اینه که یه فایل  رو توی حلقه تکرار اینقدر باز و بسته نکنید:
مثال برای ذخیره اعداد:
a = input('a = ')
b = input('b = ')
f=open('test.txt','w')
for n in range(a,b+1):
    f.write(str(n)+'\n')
f.close()

مثال برای بازیابی اعداد:
f=open('test.txt','r')
for n in f.readlines():
    print(n)
f.close()
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: ابراهیم مشهدی تفرشی در 17 بهمن 1392، 02:21 ب‌ظ
من هم خیلی به خودم فشار آوردم   ](*,) تونستم این رو بنویسم
با اینکه مثل دوستان مختصر نیست ولی :
۱ : ذخیره و بازیابی تو خودشه
۲ : چون از pickle استفاده کرده لازم نیست که به string تبدیل بشه همون int ذخیره می شه
۳ : تا اونجایی که به مخم رسید سعی کردم تمام احتمالات رو در نظر بگیرم
          مثلا لازم نیست حتما عدد اول از عدد دوم کوچیکتر باشه
                  اگر عدد اول کوچکتر باشه به بالا می شمره
                  اگر عدد اول بزرگتر باشه به پایین می شمره

یه ایراد عجیب هم داره اینه که
من نمی دونم چرا وقتی فایل رو بازیابی می کنه متن فایل خالی می شه؟ :o
import pickle
def save2file ():
f = open ("test.pck", "w")
m=input("First Number?.")
n=input("Second Number?")
if n > m:
while m <= n:
pickle.dump(m, f)
m = m + 1
elif m > n:
while m >= n:
pickle.dump(m, f)
m = m - 1
elif m == n:
pickle.dump(m, f)
f.close()
def loadfile ():
while 1:
x = pickle.load (f)
if x != "":
print x
elif x == "":
break
f.close()
while 1:
print "For save press 1 \nFor load press 2"
answer = raw_input()
if answer == "1":
save2file()
break
elif answer == "2":
try :
f = open ("test.pck", "r")
loadfile()
break
except :
print 'There is no file. \n'
break
else:
print "press 1 or 2... \n"
آخرش هم تشکر می کنم از دوستی که این بحث رو مطرح کرد
کلی تمرین شد برای من در سرفصل های مختلف
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: omidima در 10 دی 1398، 10:50 ق‌ظ
با سلام خدمت شما .
شما فایل رو با قابلیت w باز کردید یعنی هر بار که میخواد فایل رو بنویسیه اون رو پاک میکنه و دوباره شروع میکنه به نوشتن
برای رفع یان مشکل میتونید از a+استفاده کنید تا این مشکل براتون بر طرف بشه
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: omidima در 10 دی 1398، 10:56 ق‌ظ
پاسخ برای پرسش اول
دوست عزیز شما میتونید به این صورت کد ها رو بنویسید
    file = 'e:\\d.txt'
    omid=open(file,'w')
    num1=int(input("Type First Number : "))
    num2=int(input("Type Second Number : "))
    while num1<num2 :
        omid.write(str(num1)+'\n')
        num1 +=1
    if num1>num2 :
        print ("Please Type a True Number !")
    else  :
        print ('Good lock')
    omid.close()
    omid=open(file,'r')
    print(omid.read())

بنده از پایتون سه استفاده مینکن برای همین print یک تابع هست اگر به مشکل خوردید در پایتون 2 پرانتزهای print رو بردارید
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: هومان در 10 دی 1398، 04:10 ب‌ظ
پایتون ۲ فقط یه روز دیگه از عمرش مونده
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: mahdi7d1 در 30 بهمن 1398، 02:19 ب‌ظ
سلام دوستان !
من یه برنامه نوشتم که موقع اجرا ازت 2 تا عدد میگیره و اعداد بین اینارو نشون میده !
مثلا عدد اولی رو میزنی 1 و عدد دومی رو میزنی 20 و نتیجش این میشه که از 1 تا 20 زیر هم چاپ میکنه !
اما میخواستم یکم کاربردی ترش کنم ! میخوام بااستفاده از توابع : write و open یه کاری بکنم که بعد از وارد کردن اعداد خودش در یه فایل ذخیره کنه !
این سورس اولی که بدون مشکل هست و کارش فق نمایش دادنه :
#!/usr/bin/python
num1=input("Type First Number : ")
num2=input("Type Second Number : ")
while num1<num2 :
print num1
num1 +=1
if num1>num2 :
print "Please Type a True Number !"
else  :
print "Good Luck"

اینم سورس دومی که مشکل دار هست و کارشم گرفت اعداد و ذخیره ی اعداد بین :
#!/usr/bin/python
num1=input("Type First Number : ")
num2=input("Type Second Number : ")
while num1<num2 :
print num1
num1 +=1
m=open('test.txt','w')
m.write(num1)
m.close()
if num1>num2 :
print "Please Type a True Number !"
else  :
print "Good Luck"

الان کلا مشکلم اینه که در سورس دومی , مثلا بعد از اجرا وقتی عدد اول رو میزنی 1  و عدد دوم رو میزنی 50  این نرم افزار باید خودش  از 1 تا 50 رو چاپ کنه و همینطور باید از 1 تا 50 رو در فایلی به نام test.txt ذخیره کنه ! اما ارور میده  ](*,)
ممنون میشم دوستان کمکم کنن !
پایتون ارور های خیلی خوبی میده. اگه به ارور ها دقت کنین که چی میگن ممکنه به نتایج خوبی برسی. برای این مساله هم باز کردن و بستن فایل تو لوپ قطعا استاندارد نیست ولی مطمئن نیستم که ارور دقیقا به این خاطر باشه. میتونی یه رشته بسازی که اعداد یه خط یه خط بهش اضافه کنی و در نهایت فقط یبار فایلو باز کنی و اون رشته رو توی فایل بنویسی.
عنوان: پاسخ : مشکل در پایتون (باز کردن فایل - نوشتن در فایل)
ارسال شده توسط: mahdi7d1 در 30 بهمن 1398، 02:22 ب‌ظ
با سلام خدمت شما .
شما فایل رو با قابلیت w باز کردید یعنی هر بار که میخواد فایل رو بنویسیه اون رو پاک میکنه و دوباره شروع میکنه به نوشتن
برای رفع یان مشکل میتونید از a+استفاده کنید تا این مشکل براتون بر طرف بشه
حالا یادم اومد حرف این دوستمون کاملا درسته استفاده از w به عنوان نوع باز کردن اطلاعات قبلی فایل رو پاک می‌کنه. راه بهترش همون a+ هست و یا همونطور که گفتم تولید استرینگ کامل و بعد نوشتنش تو فایل.