
عنصر زمان در توسعه برنامههای مختلف، استفادههای گوناگونی دارد. ممکن است بخواهیم زمان ارسال درخواست را بررسی کنیم. یا در هنگام اجرای برنامه، وقفه ایجاد کنیم. در این آموزش به کار با زمان در پایتون میپردازیم. از کتابخانه time در پایتون استفاده کرده و با توابع مختلف آن آشنا شویم.
فهرست محتوای آموزش
زمان در سیستمهای کامپیوتری
همانطور که ممکن است بدانید، زمان در سیستمهای کامپیوتری با ثانیه سنجیده میشود. همه زمانها یک مبدأ زمانی دارند. مبدا زمان کامپیوترها یکم Jan سال 1970 میلادی ساعت 00:00 بامداد است.
زمان در کامپیوتر به صورت ثانیههای گذشته شده از ساعت مبدأ محاسبه میشود. سپس با تبدیل محاسباتی خاص، میتوان آن را تبدیل به ساعتها و تاریخ کرد.
ماژولها و کتابخانههای متعددی برای کار با زمان در پایتون وجود دارند. اکثراً برای کاربرد خاصی در برنامه نویسی استفاده میشوند.
یکی از اصلیترین این ماژولها که به صورت پیشفرض همراه با پایتون در اختیار قرار میگیرد کتابخانه time است.
این کتابخانه توابعی مختلفی برای دریافت زمان فعلی سیستم، محاسبه زمانها و ایجاد وقفه در اختیار ما قرار میدهد.
در ادامه مقاله به بررسی کار با ماژول time در پایتون خواهیم پرداخت.
کتابخانه time برای کار با زمان در پایتون
برای استفاده از این ماژول ابتدا باید آن را وارد برنامه کنیم.
import time
حال میتوانیم با صدا زدن توابع مختلف روی time کارهای مربوط به زمان را انجام دهیم.
دریافت زمان سیستم
اولین و یکی از پر کاربردترین توابعی که در این ماژول وجود دارد، تابع time()
است. این تابع، زمان فعلی سیستم را به ما خروجی میدهد. خروجی به صورت float بوده و همان ثانیههای سپری شده از مبدأ زمان میباشد.
time.time()
# 1568285153.2479844
زمان فعلی همراه با تاریخ امروز
تابع دیگری در ماژول time پایتون تحت عنوان localtime()
وجود دارد. این تابع یک شئ از نوع time.struct_time
باز میگرداند. این شئ ویژگیهایی با نام و اطلاعات زیر دارید.
time.localtime()
# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=12, tm_hour=15,
# tm_min=18, tm_sec=28, tm_wday=3, tm_yday=255, tm_isdst=1)
اگر با ساختار class آشنا نیستید، جلسه کلاس در پایتون از دوره جامع رایگان را ببینید. ویژگیهای این شیء عبارتاند از:
- tm_year : سال به میلادی
- tm_mon : ماه جاری
- tm_mday : شماره روز ماه (مشخص کننده چندم ماه)
- tm_hour : ساعت فعلی
- tm_min : دقیقه زمان حال
- tm_sec : ثانیه زمان
- tm_wday : شمارش روز هفته (چندمین روز هفته جاری با احتساب دوشنبه معادل 0)
- tm_yday : شمارش روز سال (امروز چندمین روز سال است ؟)
- tm_isdst : مشخص کننده فعال بودن ساعت تابستانی (daylight)
میتوانیم این شئ را در متغیری ذخیره کرده و از ویژگیهای آن استفاده کنیم. برای مثال در قطعه کد زیر، سال و شمارنده روز سال را چاپ کردهایم.
now = time.localtime()
print( now.tm_year) # 2019
print( now.tm_yday) # 255
تبدیل ثانیه به ساعت و تاریخ روز
دیدیم که به کمک تابع time()
میتوانیم زمان را به صورت ثانیه گرفته و نگه داریم. حال ممکن است یک مقدار عددی (ثانیه) داشته باشیم که بخواهیم آن را تبدیل به زمان کنیم. (بیشتر بدانید: تعریف تابع در پایتون)
برای تبدیل ثانیه به روز و ساعت و دقیقه در پایتون از تابع ctime()
در کتابخانه زمان پایتون استفاده خواهیم کرد.
time.ctime(1568286074.8505077)
# 'Thu Sep 12 15:31:14 2019'
اگر هیچ مقداری به عنوان ورودی تابع به آن ندهیم، به صورت پیشفرض زمان حال را خروجی میدهد.
تبدیل زمان و تاریخ خاص به ثانیه
فرض کنید یک تاریخ و زمان خاصی را داشته باشیم و بخواهیم معادل ثانیه آن را محاسبه کنیم. برای این کار از تابع mktime()
کمک خواهیم گرفت.
این تابع یک شیء از نوع struct_time در ورودی میگیرد. (ساختارش دقیقاً مشابه ساختار خروجی تابع localtime()
است.)
در آموزش دیگری در مورد ساخت یک شیء struct_time صحبت میکنیم. فعلاً برای اینکه این تابع را بررسی کنیم، زمان حال را تبدیل به ثانیه میکنیم؛ یعنی:
t = time.localtime()
time.mktime( t ) # 1675620533.0
در اصل این تابع برعکس تابع localtime()
عمل میکند.

چاپ زمان با فرمت خاص زمان در پایتون
در اکثر اوقات، در هنگام کار با زمان در پایتون نیاز داریم یک زمان را با فرمت خاصی نمایش دهیم. برای این کار میتوان از تابع strftime()
استفاده کرد.
این تابع دو ورودی دارد.
- ورودی اول به صورت رشتهای مشخص کننده فرمت دلخواه ماست.
- ورودی دوم یک شیء از کلاس struct_time که مشخصکننده زمان مورد نظر ماست.
current_time = time.localtime()
time_string = time.strftime( "%m/%d/%Y %H:%M:%S", current_time )
print(time_string) # 09/12/2019 16:01:21
نمادهایی که در رشته مشخص کننده فرمت خروجی استفاده میشوند، نمادهایی هستند که برای مشخص کردن زمان استفاده میشوند. اگر میخواهید به خروجی تابع print()
ساختار دهید، آموزش format در پایتون را ببینید.
اگر میخواهید با تمام نمادهای کار با زمان در پایتون آشنا شوید، به جدول نمادهای زمان پایتون در مستندات مراجعه نمایید.
تبدیل زمان با فرمت به ثانیه
اگر بخواهیم عکس عمل قبلی را انجام دهیم، از تابع strptime()
استفاده خواهیم کرد. این تابع دو ورودی از ما میگیرد.
- ورودی اول به صورت رشته و مشخص کننده فرمت زمان ورودی است.
- ورودی دوم به صورت رشته و زمان مورد نظر ما است.
time_string = "13 Sep 2019"
result = time.strptime( time_string, "%d %b %Y" )
print(result)
# time.struct_time( tm_year=2019, tm_mon=9, tm_mday=13,
# tm_hour=0, tm_min=0, tm_sec=0,
# tm_wday=4, tm_yday=256, tm_isdst=-1 )
اگر ساعت در مقدار وارد شده مشخص نباشد، صفر در نظر گرفته میشوند.
ایجاد وقفه در اجرای برنامه با تابع sleep زمان در پایتون
گاهی اوقات در توسعه برنامهها نیاز داریم برنامه را برای مدتی مشخص متوقف کنیم. برای مثال یک کار حتماً میبایست 45 ثانیه بعد از اتمام فعالیتی دیگر، انجام شود.
یا در برنامه نویسی خزندههای وب (Web Crawler) برای جلوگیری از مسدود شدن فعالیت ربات، بهتر است وقفههایی به صورت تصادفی به خزنده داده شود.
برای وقفه دادن به برنامهی در حال اجرا، از تابع sleep()
در ماژول time استفاده میشود.
ورودی این تابع یک عدد است که مقدار ثانیه وقفه در اجرا را مشخص میکند.
time.sleep( 45 )
تعریف delay تصادفی در پایتون
برای اینکه مقدار تأخیر (وقفه) اجرای برنامه به صورت تصادفی تعریف شود، میتوان به آسانی از یک مقدار Random استفاده کرد.
قطعه کد زیر در هر بار اجرای حلقه پایتون، به صورت تصادفی از 1 تا 2 دقیقه استراحت میکند.
import time
import random
while True:
# do something here
time.sleep( random.randint( 60, 120 ) )
راهکار ذخیره زمان در برنامه نویسی
تا این جای کار انواع توابعی که برای کار با زمان در پایتون استفاده بیشتری دارند را بررسی کردیم. اما ممکن است برای ذخیرهسازی زمان مقداری سر در گم شده باشید!
روشهای زیادی برای ذخیرهسازی زمان وجود دارد. دو راهکار ساده و متداول آن را به مختصر بررسی میکنیم.
1- ذخیره ثانیه زمان مورد نظر
در این حالت تمام مقادیر زمانی ما به صورت یک عدد که مشخص کننده ثانیه سپری شده از مبدأ است را ذخیره میکنیم. هر گاه نیاز بود، میتوان آن را با روشهای گفته شده به رشته پایتون (string) قابل خواندن تبدیل کرد.
مزیت این روش مقایسه بسیار راحت زمانها با یکدیگر است! برای مقایسه کوچکتر یا بزرگتری دو زمان، کافی است آن دو عدد را با هم مقایسه کنیم!
2- ذخیره زمان قابل خواندن برای انسان
در این حالت، در اصل فرمت قابل خواندن توسط انسان را در پایگاه داده خود ذخیره میکنیم.
این راهحل بررسی جداول داده را راحتتر خواهد کرد. همچنین برای برنامههایی که نیاز به نمایش زمانهای مختلف ذخیره شده داریم، بهینهتر است؛ زیرا نیازی به محاسبهی چند باره زمان نخواهیم داشت.
محاسبه زمان اجرای برنامه در پایتون
یکی از رایجترین استفادههای برنامهنویسان از ترفندهای کار با زمان در پایتون، محاسبه زمان اجرای برنامه است.
با یک ترفند ساده و استفاده از ماژول time در پایتون خواهیم توانست مدت زمان اجرای کد را به طور کاملاً دقیق محاسبه کرد.
برای این کار، باید قبل از شروع قطعه کد مورد نظر، زمان فعلی را به کمک تابع time()
ثبت کرده و پس از اجرا نیز همین کار را انجام دهیم.
تفاضل این دو زمان، معادل با زمان اجرای برنامه خواهد بود.
برای مثال، فرض کنید میخواهیم مدت زمان اجرای برنامه زیر را به دست بیاوریم.
در این برنامهی ساده، با یک حلقه for اعداد 1 تا 500 را با هم جمع کرده و در خروجی چاپ میکنیم.
sum = 0
for n in range(1,500):
sum += n
print(sum)
برای محاسبه زمان اجرا، قبل از شروع حلقه for
با صدا زدن تابع time()
زمان فعلی را در متغیر start
میریزیم.
در انتها نیز با صدا زدن دوبارهی همین تابع، زمان شروع را از آن کم کرده و در خروجی نمایش میدهیم.
import time
start = time.time()
sum = 0
for n in range(1,500):
sum += n
print(sum)
print("Run Time: " + str( time.time() - start ))
زمان اجرای برنامه برای من حدود 0.0249 ثانیه شد!
124750 Run Time: 0.024934053421020508
به همین راحتی توانستیم زمان اجرای برنامه در پایتون را با استفاده از ترفندهای کار با زمان که یاد گرفتیم محاسبه کنیم.
جمعبندی: کار با ساعت در پایتون و ماژول time
در این آموزش کار با کتابخانه time در زبان برنامه نویسی پایتون را یاد گرفتیم. با استفاده از توابع مختلف آن، زمان فعلی سیستم را گرفته و زمانهای مختلف را به یکدیگر تبدیل کردیم.
در ابتدا با کاربرد تابع time()
آشنا شدیم که زمان فعلی سیستم را به صورت ثانیههای سپری شده خروجی میدهد. سپس این مقدار را به کمک تابع strftime()
به فرمت قابل خواندن تبدیل کردیم.
در ادامه با تابع sleep()
در اجرای برنامه خود وقفه ایجاد کردیم. در انتها نیز به بررسی روشهای ذخیره زمان در برنامه نویسی پرداختیم.
شما از چه تکنیکهایی برای کار با زمان در پایتون استفاده میکنید؟ جای کدام تابع یا روش در این آموزش خالی است؟ بخش دیدگاهها برای نظرات و سوالات شماست.
این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش پایتون
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
سلام خدمت استاد عزیز.
من میخوام یک برنامه ای بسازم که از تایمی که بهش میدم، به بعد رو برام محاسبه کنه و نشون بده. به طور مثال برنامه من در روز ۲شنبه ساخته شده و وقتی من در روز ۵شنبه وارد اون برنامه میشوم، به من بگه که از تایم ساخت برنامه ۳ روز گذشته. لطفا برای ساخت به من راهنمایی بدید.
سلام محمد عزیز 🙂
در حالت کلی، شما باید زمان اولیه بگیرید و داخل یه متغیر نگه دارید. هر زمان که لازم بود مدت زمان اجرای برنامه رو بسنجید، کافیه دوباره زمان فعلی رو محاسبه کرده و تفاضلشون رو محاسبه کنید. چیزی شبیه به کد زیر که ثانیه گذشته رو محاسبه میکنه:
حالا اگر ممکنه برنامهتون در این بین بسته بشه و چند روز بعد دوباره باز بشه (مدام در حال اجرا نیست) لازمه یک دیتابیس یا مثلاً فایل برای ذخیرهسازی مقدار
time1
استفاده کنید.سلام وقت بخیر.
یه سوالی برام پیش اومد از کتابخانه matplotlib. من میخوام یه سری دیتا از کاربر به صورت دونه دونه بگیرم، و هر کدوم رسم کنم. ( به صورت نقطه )
فقط تو هر مرحله باید پنجره رسم ببندم، تا بتونم نقطه بعدی وارد کنم و رسم کنم.
میخواستم ببینم با چه کتابخونه یا ماژولی میشه این کار کرد؟ اینکه کاربر پنجره رسم نمودار نبنده اما هی نمودار جدید رسم کنه.
اولش فکر کردم شاید plt.close بتونه این کار کنه. اما نمیدونم چطوری! چه آرگومانی بدم بهش؟
بعد گفتم شاید بشه از کتابخونه time یه ماژولی استفاده کرد که پنجره plot بعد از مثلا 5 ثانیه خودش بسته بشه.
باز موندم time. sleep جواب میده یا نه…
سلام. مگر داخل تاپل میشه دادهها رو به صورت زوج tm_year=2020 نوشت؟
سلام
چه اشتباهی!! درسته مصطفی جان. ورودی تابع
mktime()
یک شیء هست و نه تاپل تایتون. اشتباه نوشته بودیم و ممنون که گفتی تا اصلاحش کنیم.با سلام و خسته نباشید :
برای ذخیره مقدار تابع
time.time()
که یک فلوت هست در mariadb به مشکل برخوردم فقط وارچر جواب می دهدسلام
data type ستونتون float هست؟ خطایی میگیرید؟
بله data type ستون float است و خطا دارم اگر بدون تایین اندازه float , دیتا تایپ جدول درست کنم یک قدار ثابت را فقط ذخیره می کند
متن خطا رو میفرستید؟ چون به نظر نباید اینطور باشه!
سلام. میشه کاری کرد که سرعت خروجی دادن برنامه رو بیشتر کرد؟ واقعا فوری نیاز دارم اگر کسی مبدونه لطفا بگه
سلام
بستگی داره خروجی برنامهتون چیه! اگه این تأخیر خروجی مربوط به زمان پردازش باشه روش خاصی نداره مگر پردازنده یا حتی رم رو قویتر کنید.
سلام بنده میخواهم یه لوپ با for بنویسم که توی زمان بپرخه یعنی بگم تا مثلا 60 ثانیه این کار رو مداوم انجام بده ممنون میشم راهنمایی کنید
سلام
ممکنه روشهای مختلفی داشته باشید. ولی یه راهحل که الآن به ذهنم میرسه اینه که زمان فعلی (قبل از اجرای حلقه) رو در جایی ذخیره کنید. بعد درون حلقه for یا به عنوان شرط حلقه while چک کنید اگه تفاوت زمان فعلی با مقداری که ذخیره داشتید بیشتر مساوی از 60 ثانیه شده بود از حلقه خارج بشید.
سلام. من میخوام برنامهای بنویسم که زمان سیستم (ساعت، دقیقه، ثانیه) را خوانده و هر 5 ثانیه اون رو توی یک فایل txt چاپ کنه. این برنامه جوری باشه که با روشن شدن کامپیوتر و شروع کار سیستم عامل زمان سیستم توی فایل txt ثبت بشه.
اینو با کتابخانه thread به صورت موازی بخوام بنویسم چطوری میشه؟
سلام
آخه این سؤال خودش یه مینی پروژه است و نمیشه جواب کامل داد! 😉
بهنظرم برای این کار thread نیاز نباشه چون هر 5 ثانیه داره یه کار انجام میده و چندتا همزمان نیست. به کمک حلقه و sleep میتونید این قسمتش رو پیاده کنید. جلسه کار با فایل از دوره جامع رایگان هم برای نوشتن در فایل براتون کاربردیه.
برای اینکه در شروع سیستم برنامه اجرا بشه، باید اون رو در startup سیستم عامل اضافه کنید. در یکی از پروژههای دوره دستگرمی با پایتون این کار رو کاملاً بررسی میکنیم.
خیلی ممنونم ازتون.
نه پروژه یا مینی پروژه نیست. یک قسمتی از تمرین دانشگاهیه که نمیدونستم چطور باید در سیستم عامل اضافهاش کنم
همون توی startup اضافش کنید کاری که میخواید انجام میشه.
سلام من می خوام یک ال ای دی چشمک زن بسازم، چطوری می تونم مشخص کنم که از چه زمانی شروع بشه و چند ثانیه روشن باشه ؟
سلام
روش پیادهسازیش به کدی که میزنید وابسته است. اما یه روش ساده اینه که در یه حلقه بی نهایت زمان رو بگیرید و مقایسه کنید، اگه هنوز به زمان موردنظر رسید (بیشتر یا مساوی بود) از حلقه خارج و بقیه برنامه رو اجرا کنه.
ماژولهایی هم برای اجرای برنامه در یه زمان خاص وجود داره، که تا موقع اجرا کد رو sleep میکنه.
برای n ثانیه روش بودن هم شاید سادهترین راهش این باشه که برنامه رو sleep کنید؛ یعنی چراغ روش، sleep و چراغ خاموش.
سلام
برای برنامه ای که با داشتن تابع تاخیر یک ثانیه بتواند ساعت را پیاده سازی کند از چه کدی استفاده کنم؟لطفا راهنمایی کنید
سلام
منظورتون از تابع تأخیر چیه؟
سلام.این رو چطور میشه نوشت:برنامه ای که با استفاده از تابعی، زمان را بر حسب ساعت، دقیقه و ثانیه خوانده، زمان را بر حسب ثانیه چاپ کند.
سلام
بسته به اینکه ورودیتون رو در چه فرمتی میگیرید، یه راهش اینه که بخشهای رشته رو بخونید (در جلسه رشتهها درمورد جدا کردن صحبت کردیم) و تشخیص بدید که مثلاً ساعت، دقیقه و ثانیه چنده. حالا یه ضرب و جمع برای رسیدن به نتیجه کافیه.
سلام.من میخوام یک برنامه ای رو بنویسم که از زمان run شدن برنامه ۶۰ ثانیه زمان بگیره و توی این ۶۰ ثانیه یکسری کار ها رو انجام بده و بعد ۶۰ ثانیه یکسری کار های دیگه رو انجام بده.ایا تابعی برای اینکار وجود داره؟
سلام
یعنی میخواید کارهای اولیه اجباراً در 60 ثانیه اجرا بشه؟ یا اگه در 5 ثانیه هم تموم شد 55 ثانیه بیکار باشه؟
احتمالاً بتونید با چند پردازشی (آموزشش توی سایت هست) دو تا پردازش ایجاد کنید که یکی کارهایی رو انجام بده (بخش اول) و دیگری ابتدا 60 ثانیه منتظر بمونه (با sleep) و بعدش کارهاش رو انجام بده.
سلام من میخوام
تعداد روز ها را چاپ کند زمانی که از بیست هفته کمتر است
چطور باید نوشت برنامه پایتون
سلام
میشه یک نمونه از خروجی که مدنظرتون هست رو بگید؟ برای تعداد روزها احتمالا بتونید از متدهای این کتابخونه استفاده کنید. (صفحه مستنداتش رو چک کنید) برای کمتر بودن از یه مقدار هم از یه ساختار شرطی ساده کمک بگیرید.
سلام خسته نباشید
توی یک بات میخوام برنامم تشخیص بده که پیامی که فرستاده شده در چه مانی بوده میتونین راهنمای کنین ؟
سلام
این مورد رو باید از مستندات سرویسی که دارید روش ربات میسازید پیدا کنید. احتمال خیلی زیاد متدی در اختیارتون میذاره که زمانش رو بگیرید.
سلام وقتتون بخیر
چطوری اگر کاربر بعد از 10ثانیه چیزی input نکرد یک پیامی رو چاپ کنیم!؟
چطور باید این کد رو بنویسیم؟ لطفا جواب بدین🙏
سلام
میتونید از چند پردازشی استفاده کنید. دو تا کار همزمان، یکی منتظر ورودیه و دیگری بعد از 10 ثانیه پیام موردنظرتون رو نمایش میده. آموزش چند پردازشی به همین اسم در سایت هست میتونید ایده بگیرید.
سلام خسته نباشید
یه سوالی داشتم ، من میخوام یه برنامه رو زمانبندی کنم که راس فلان ساعت ران بشه. چیکار باید کنم؟ ممنونم
سلام
اگه اسکریپتتون همیشه در حال اجراست که میتونید در زمان مناسب تابع اصلی رو اجرا کنید. (پیشنهاد اینکه از چندپرداشی کمک بگیرید)
اگه نه، توی ویندو از Task Scheduler کمک بگیرید.
سلام
من میخواستم در حالتی که دارهمحاسبه میکنه برای اینکه مخاطب هی پشت سر هم کلیک نکنه و کامپیوتر قاطی نکنه یه پیام please wait بیاد تا جواب آماده و چاپ میشه
میشه کمکم کنید و بگید چجوری اینکار را بکنم؟
سلام
میتونید پیام رو چاپ کنید، وقتی نتیجه آماده شد، پاکش کنید و نتیجه رو نمایش بدید. آموزش پاک کردن کنسول در سایت بهتونه کمک میکنه.
سلام ، من با استفاده tkinter یک پنجره ای ساختم ، میخوام زمان نشون دادن یکی از دکمه ها به تاخیر بیفته اما زمانی که قبل از دکمه از .time استفاده میکنم پنجره هم به همون مقدار دیر باز می شه چون .mainloop در آخر هست ، من باید چکار بکنم؟ ممنون میشم راهنمایی کنید.
سلام
تجربهای برای این کار نداریم. در مستنداتش یک متد به نام
after(n, func)
هست که روی root صدا زده میشه. بعد وقتی اجرا بشه بعد از n ثانیه تابع func رو اجرا میکنه. چک کنید شاید بتونید ایجاد دکمه یا نمایشش رو به تأثیر بندازید.سلام امیدوارم حالتون عالی باشه
اگر بیام و با همین دستور
time.localtime()
بخوام ثانیه از سیستم گرفته بشه و در خروجی هر بار بروزرسانی بشه باید چیکار کنم نکته اینه که میخوام این را در یک پنجره و به صورت یک لیبل در tkinter نمایش بدمسلام
میتونید از چند پردازشی python یا متد
after()
روی شئ tkinter کمک بگیرید. مثال کوچکی از دومی در دیدگاههای امروز در آموزشی که لینک شده زده شده.من یک برنامه توی پایتون نوشتم که یه مقدار وقت میخواد تا یک آی پی رو چک کنه حالا من چطور بهش بگم اگه بیشتر از یک ثانیه طول کشید دیگه نمیخواد چک کنیش ممنون میشم جواب بدید
سلام
از کتابخونه خاصی برای چک کردن استفاده میکنید؟ برخی کتابخونههایی که با ارسال درخواست در شبکه سروکار دارند این ویژگی رو ارائه میدن.
یک راهحل که الان به ذهنم میرسه اینه که از چندپردازشی یا Thread ها استفاده کنید. یک پردازش در انتظار چک کردن بمونه و برنامه اصلی بهطور مداوم زمان رو چک کنه. اگه زمان پایان یافت، پردازش رو kill کنه.
برنامه ای بنویسید که ساعت دقیقه و ثانیه االن شما را بگیرد و به شما بگوید چند ساعت
و چند دقیقه و چند ثانیه تا پایان روز باقی مانده است؟
ببخشید اگرممکنه جواب اینو بدید
تابع خاصی برای این کار نیست و باید محاسبات انجام بدید.
لحظه فعلی رو با
datetime.datetime.now()
بگیرید. حالا ساعت فعلی منهای24-1
(کل روز) میشه ساعت باقیمونده. همینطور برای دقیقه و ثانیه. در نهایت هم این میزان رو باید به ثانیه تبدیل کنید. (مثلاً دقیقه باقیمونده رو ضربدر 60 کنید)سلام
اگر بخوایم ی ساعت با ثانیه شمار در برنامه داشته باشیم باید چکار کنیم؟
سلام
کتابخونه آمادهای برای این کار ندیدیم. در pypi جستجو کنید، اگر چیزی پیدا نشد، میتونید به کمک تابع زمان در پایتون (مثل
time()
) و با کمکsleep()
هر یک ثانیه یکبار، ساعت رو آپدیت کنید.سلام اگر بخوام یک متن ساده به یک مقدار خاص نمایش داده بشه مثلا بعد از نمایش تا 6 ثانیه بعد متن پاک بشه باید چه دستوری را وارد کنم؟
سلام
بهتره یک حالت تایمر ایجاد کنید و مشابه آموزش پاک کردن صفحه کنسول python اقدام به پاک کردن کنسول بعد از اتمام تایمر کنید.
با سلام
بنده یک سوال دارم اگر بخواهم به برنامه بگم برو داده های مربوط به یک روز خاص را از توییتر بگیر مثلا دو سال پیش. چه کدی باید بنویسم. تشکر
سلام
توضیح چنین بحثی در یک دیدگاه امکانپذیر نیست. شما میتونید از apiهای توییتر و یا web scrapping استفاده کنید. با بررسی مستدات این روشها میتونید به هدفتون برسید.
در تلاشیم طی چند ماه آینده یک دوره قدم به قدم برای موضوع مشابهی منتشر کنیم.
سلام
اگه بخوام فقط ساعت و دقیقه چاپ کنم چیکار کنم؟
سلام
مشابه بخش چاپ با فرمت خاص میتونین مشابه
time.strftime("%H:%M", time.localtime())
عمل کنید. ورودی دوم میتونه زمانی در گذشته یا آینده هم باشه.سلام ببخشید چجوری گذشته و اینده رو بنویسیم؟
سلام
میخواید زمانی در گذشته یا آینده رو محاسبه کنید؟
با تابعی شبیه
strptime("5 Dec 21", "%d %b %y")
میتونید هر زمانی رو در ساختار struct_time داشته باشید.سلام ببخشید کدی هست که باهاش زمان اجرای فایل رو مشخص کنیم؟ یعنی برنامه یا کد خود به خود اجرا بشه تو تاریخ مشخص مثل تقویم ها یا اذان گو ها که سر ساعت مشخص اجرا میشن و نیازی نیست ما اونارو باز کنیم فقط کافیه برنامه تو گوشیمون یا کامپیوترمون باشه،،، ممنون میشم اگه پاسخ بدین
سلام
پیشنهاد میکنم کتابخونه schedule که برای زمانبندی در پایتون هست رو یه بررسی کنید.
سلام خسته نباشید میخواستم بدونم با چه کدی میشه کاری کرد که حتی اگه کامپیوتر خاموش و دوباره روشن شد کد ما در هر دقیقه یا ثانیه دوباره انجام بشه من معمولا کدهایی که مینویسم همین مشکل رو دارن و تا زمانی که کامپیوتر روشن باشه کار میکنن وقتی خاموش میشه و دوباره روشن میکنم دیگه کار نمیکنه و متوقف میشه
سوال بعدم اینه که اگه بخوایم کد ما در هر ثانیه مثلا یک اسکرین شاتی از صفحه بگیره و نام اون رو به ترتیب عدد مثلا دفعه اول عدد 1 و دفعه دوم عدد 2 ثبت کنه باید چیکار کنیم من فقط میتونم عدد تصادفی قرار بدم و چون ممکنه عدد دوباره تکرار شه ارور میده و اینکه اگه به ترتیب اسکرین شات هارو ذخیره کنه بهتره
سوال بعدیم اینه که میشه کاری کرد کد ما هر وقت که یک صفحه یا یک پوشه یا یک برنامه و یا هرچیزی که باز کردیم اجرا بشه خلاصش اینه که هر وقت عملیاتی انجام شد اینم اجرا بشه و اینکه اگه میشه بگین چطور کاری کنیم که این اسکرین شات های ذخیره شدمون بعد یک روز یا چند روز خودشون پاک بشن و هربار نیاز نباشه بریم و دستی پاکشون کنیم هم از پوشه و هم از هاستمون(پایتون 3 کار میکنم) تشکر تشکر تشکر
سلام
میتونید فایل رو در startupهای سیستم قرار بدید تا در هر بار راهاندازی مجدد سیستم عامل اون هم شروع به اجرا کنه.
چرا برای شمارهبندی فایلها از یک متغیر سمت برنامه استفاده نمیکنید؟ یا مثلا زمان فعلی رو به انتهای اسم اضافه کنید!
برای حذف اتوماتیک روش خاصی نمیدونم. میتونید برنامهای بنویسید که مثلا ابتدای هر روز فایلهای دو روز قبل رو حذف کنید.
با سلام و عرض ادب
ممنون بابت مطالب مفید
فقط یه سوال داشتم
چطوری دو تا زمان رو از یوزر بگیریم و جمع کنیم؟
مثلا از یوزر دو تا زمان 2:25 و 3:58 رو بگیریم و جمع کنیم که جوابش بشه 6:23، مثل ماشین حساب زمان
ممنون میشم جواب بدید
سلام
یه راهحل ساده، استفاده از تابع تبدیل زمان به ثانیه (
strptime()
)، جمع بستن دو مقدار عددی (ثانیهها) و سپس تبدیلشون به فرمتی که نیاز دارید هست. فقط این وسط احتمالاً باید زمان 00 امروز رو از ثانیهها هم کنید.برای جدا کردن 3:58 میتونید از
split()
رشته متنی استفاده کنید.متوجه نشدم اگه کدشو بنویسید یا در سایت برای همه قرار بدید ممنون میشم
یک نمونه خیلی ساده که با کتابخونه datetime برای کار با روز و ساعت (زمان) در پایتون هست رو در قطعه کد زیر میبینید:
اینها برای زمانهای داخل امروز هستند. با فرمتدهی به زمان میتونید روز رو هم حساب کنید.
سلام ممنون بابت این اطلاعات مفید بود فقط سوال داشتم که من دارم الان یه برنامه ای مینویسم که یه جا به مشکل برخوردم مشکل من اینه که چطوری توی برنامم دایره رسم میشه و غیره که یه جور بازیه چی باید بنویسم که چند ثانیه دایره ها بمونن بعد پاک بشن واسه پاک کردنش مشکل دارم میشه راهنمایی کنید ممنون میشم.
سلام حامد عزیز
اینطور که متوجه شدم شما دارید با کاراکترها در کنسول پایتون یک دایره میکشید. اگر میخواید پاک بشه میتونید از یه تابع پایتون با محتوای زیر استفاده کنید:
این قطعه کد تمام کنسول رو پاک میکنه. امیدوارم مسئلتون رفع بشه.
برای این کار توضیحاتی منتشر کردم که میتونید در آموزش پاک کردن صفحه کنسول پایتون ببینید.
سلام بسیار عالی و کاربردی
میخواستم بدونم با این کتابخونه میشه کاری کرد که مثلا تعریف کنیم بعد از 5 ثانیه به خط بعدی بره و کد های بعدی رو اجرا کنه؟
سلام
به کمک تابع
sleep()
میتونید برنامه رو در یک خط خاص توقف بدید. ولی اگر بخواین هر خط به خط بعدی این اتفاق بیوفته، بعید میدونم راهکاری شاخصی غیر از فراخوانی چندبارهی همین دستور وجود داشته باشه!سلام خیلی کاربردی بود
برا اینکه داده های یک سایت رومرتبا با api بگیریم مثلا قیمت طلا /دلار و سهام و … چجوری میشه ک هر ۵ دقیقه یکبار قیمت رو بگیره و print کنه ؟ کد نویسی api و… رو اوکی هستم فقط میخوام یکبار ک ران کردم خودش هر چند دقیقه یبار قیمت رو چک کنه
سلام سامان عزیز
یه پیشنهاد خیلی ساده اینه که کد استعلام قیمت و چاپ رو داخل حلقه پایتون قرار بدید. در انتهای حلقه از دستور
sleep()
با اندازه 5 دقیقه استفاده کنید!برنامهها و کتابخونههای scheduler هم هستند که با سرچ کردن میتونید داخل گیت هاب پیداشون کنید.
خیلی مفید بود
خوشحالم که براتون مفید بوده هومن عزیز
موفق باشی.
سلام.من میخواستم ازطریق زبان برنامه نویسی پایتون،یه ربات کلیکی واسه بورس بنویسم.خواهش میکنم دراین زمینه آموزش بزارین.باتشکر
سلام
این موردی که گفتید نیاز به پیشزمینههای مختلفی داره!
اگر فرصتی باشه سعی میکنم آموزش ساخت ربات ساده رو قرار بدم؛ ولی قول نمیدم بهتون! 🙂
البته شما میتونید در مورد web scrape و ماژولهایی نظیر urllib با مسائل مرتبطش آشنا بشید.
خیلی کامل بود حالا اگه بخوایم بگیم اگه ساعت سیستم مثلا 7 شد پرینت کن 7:00 باید چه کدی بزنیم؟
سلام
دو تا کار میتونید انجام بدید:
یکی اینکه به کمک آموزش حلقه در پایتون یک while بذارید و ساعت رو چک کنید، هر زمان به ساعت مورد نظر رسیدید، مقدار مورد نظر رو چاپ کنید. این کار یکم غیر منطقیه!
کار بهتر استفاده از نخها و threading هست. threading.timer رو در مستندات پایتون جستجو کنید.
موفق باشید.
خیلی عالی بود.میشه لطفا درباره ی توابع مربوط به timezon هم مطالبی رو منتشر کنید؟
سلام
خوشحالم که براتون مفید بوده. بله حتماً؛ به محض انتشار آموزشی درمورد timezone در کار با زمان پایتون به شما اطلاع میدیم.
موفق باشید.
سلام تشکر از مطلب خوبتون
چجوری میتونم تداخل زمان رو در پایتون نشون بدم؟
مثلا بگم در فلان زمان این اتفاق میوفته و در یه زمان دیگه یه اتفاق دیگه
اگر این ها باهم تداخل ندارد یه کاری بکن
(مشابه انتخاب واحد)
سلام
خوشحالم که برای پیشرفت خودتون وقت میذارید.
برای مثال انتخاب واحدی که گفتید، شما یک بازه زمانی برگزاری (ابتدا و انتها) دارید.
سادهترین راه، مقایسه این مقادیر با هم دیگه هست. مثلاً زمان ابتدایی هر دو بازه رو با هم مقایسه و زمان کوچکتر رو ۱ و بعدی رو ۲ اسمگذاری میکنیم.
حالا زمان انتهایی ۱ رو با ابتدایی ۲ مقایسه میکنیم؛ اگر کوچکتر بود، تداخلی ندارن و برعکس!
موفق باشید.
سلام ممنون از مطلب عالیتون
یک سوال داشتم
من ساعت و روز رو در یک فایل تکست ذخیره کردم حالا میخوام چک کنه که اگه مقدار روزی که در فایل تکست هست یک روز بهش اضافه شد بیاد و یک کاری رو انجام بده
ممنون میشم لطف کنید راهنمایی کنید
سلام
خوشحالم که آموزش براتون مفید بوده
بستگی به این داره که زمان رو چطور نگهداری میکنید. مثلا اگر زمان رو به ثانیههای گذشته شده (با تابع
time()
) ذخیره میکنید، گذشت 86400 ثانیه معادل یک روز خواهد بود.اگر هم زمان رو با فرمت خاصی ذخیره میکنید، میتونید مشابه آموزش رشته در پایتون قسمتهای مختلف رو تفکیک کرده و تاریخ رو بررسی کنید.
موفق باشید.
سلام لطفا درباره کار با زمان ورودی گرفته شده از کاربر بنویسید
سلام
برای گرفتن ورودی میتویند مقاله گرفتن ورودی در پایتون از کاربر رو مطالعه کنید.
برای اینکه زمان رو بگیرید، روشهای مختلفی هست. بسته به اینکه به چه صورت میخواید کاربر زمان رو وارد کنه؛ مثل تابع
time()
زمان رو به صورت ثانیه بده یا میخواید به صورتHH:MM:SS
وارد کنه!در حالت اول که مشخصه، به راحتی میتونید مقدار رو تبدیل به زمان کنید. اما در حالت دومی، بهتره رشتهی گرفته شده رو با علامت
:
جدا کنید و هر بخش از زمان رو در اختیار داشته باشیدموفق باشید.
سلام چگونه با کتابخانه timeزمان فعلی ثبت شده را منهای ساعت دومی که چند دقیقه بعد است کنیم کنیم؟؟؟؟
سلام
شما به کمک
time.time()
میتونید لحظه الان رو داشته باشید. چند دقیقه بعد دوباره هیمن کار رو انجام بدید.تفاضل این دو تا میشه زمانی که بین این دو زمان گذشته بر اساس ثانیه
که با چند تقسیم میتونید اون رو تبدیل به دقیقه، ساعت یا روز کنید…
موفق باشید.
با سلام و تشکر. مختصر و مفید بود. خیلی به کار من اومد.
خوشحالیم که مفید بوده واستون
موفق باشید
کامل و جامع . خیلی ممنون از مطالب خوبتون
خوشحالیم که مورد استفادتون قرار گرفته