این فایل‌های pyc لعنتی

روی یک پروژه دارم کار می‌کنم که با پایتون۲ نوشتن، مشکلی که توی پایتون۲ هست اینه که پایتون فایل‌های بایت‌کد (pyc) رو کنار همون فایل اصلی سورس می‌سازه، اینجوری خیلی دایرکتوری شلوغ می‌شه و کمی کار کردن با فایل‌ها آزار دهندس. (البته توی پایتون۳ این مشکل یه جورایی رفع شده – پایتون یه فولدر به اسم __pycache__ می‌سازه و فایل‌های pyc رو توش می‌ریزه)

برای حل این مشکل اول فایل‌های pyc رو پاک کنید، سپس اگه از virtualenv استفاده می‌کنید این خط رو ته فایل activate اضافه کنید:

اگر هم از virtualenv استفاده نمی‌کنید می‌تونید اون خط رو ته فایل .bashrc تون اضافه کنید. (هر چند انجام این کار رو توصیه نمی‌کنم)

یک رابط کاربری خوب برای مفسر پایتون

معمولا موقع کد زدن وقت زیادی توی مفتسر پایتون هستم، یا برای انجام کارهای کوچیک و دم دستی که حوصله نمی‌کنم کدش رو توی یک فایل پایتون مجزا بزارم یا برای تست کردن فطعه کد یا ماژول‌های که نوشتم. به هر حال معمولا همیشه توی یکی از ترمینال‌های سیستمم یک پروسه مفسر پایتون بازه.

ولی باید قبول کنیم مفسر پایتون رابط کاربری بد و مزخرفی داره، ipython رو تست کردم ولی خیلی دوست نداشم، به نظرم زیادی بود، دنبال یک چیز ساده‌تر بودم

چند روز پیش چشمم به یک چیزی به اسم bpython خورد، یک رابط کاربری خیلی خوبی برای مفسر پایتون ایجاد کرده بود، نکته مثبتش هم این بود که حس و حال مفسر پایتون رو حفط می‌کرد. فقط امکاناتی که کم داشت رو بهش اضافه کرده بود

اینجا چندتا عکس از این برنامه گذاشتم، این برنامه توی ترمینال اجرا شده

حین کد زدن یه سری کلمات کلیدی رو پیشنهاد می‌ده که برای اوتوکامپلیشن می‌تونید با tab بینشون سوئیچ کنید
bpython-autocomplete
داکیومنت‌های کد رو به این صورت نشون میده
bpython-docs
اینجا من یک کلاس ساده پایتون نوشتم، همینطور که می‌بینید وقتی می‌خام از یکی از توابع اون کلاس استفاده کنم راهنماشو نشون می‌ده (به سینتکس هایلایتینگ زیبا در bpython هم توجه کنید)
bpython-mydocs
ارورها رو هم اینجور نشون می‌ده
bpython-error
اینجا هم یک حلقه for نوشتم
bpython-for

امکان دیگه هم که داره و خیلی خوشم اومد اینه که با ctrl+s می‌تونید کلیه دستوراتی که زدید به همراه خروجی‌هاشون توی یک فایل ذخیره کنید، مثلا دستور بالا (حلقه for) رو توی یه فایل ذخیره کردم:

برای نصب bpython پکیج bpython یا bpython3 رو از پکیح منیجر نصب کنید. یا این که از طریق pip پکیج bpython رو نصب کنید.

چند خط کد پایتون داخل اسکریپت shell

برای کاری چند خط shell script نوشته بودم که توی قسمتیش می‌خواستم یک فایل generate کنم، این کار با پایتون خیلی خوشدست‌تر بود و اگه می‌شد چند خط پایتون توی این اسکریپت شل اضافه کنم زندگی به مراتب ساده‌تر می‌شد.

روش این کار بسیار ساده بود. اینجا یک نمونه کد گذاشتم:

توی این مثال من یکی از ماژول‌های پایتون رو ایمپورت کردم و یک حلقه for هم نوشتم:

اگه بخواین می‌تونین توی شل اسکریپتتون یک متغیر تعریف کنید و توی اسکریپت پایتون بهش دسترسی داشته باشید:

فقط دقت کنید برای تعریف کردن متغیرهاتون باید حتما از کلمه کلیدی export استفاده کنید.

نکته‌ای که در مورد کلمه کلیدی EOF هست اینه که این کلمه شروع و پایان کد پایتون رو مشخص می‌کنه ولی لزوما نباید EOF باشه و شما می‌تونید هر کلمه کلیدی که دوست دارید استفاده کنید، فقط باید دقت کنید قطعه کدتون باید با همون کلمه کلیدی که شروع کردید بسته بشه.

تبدیل تمام فایل‌های مارک‌داون یک شاخه به یک فایل html

یه فولدر داشتم که تعداد زیادی فایل مارک‌داون توش بود و می‌خواستم همه اون‌ها رو به صورت یکجا توی یک فایل html تکی ببینم. برای همین یک اسکریپت کوچیک پایتون نوشتم (البته می‌شد اسکریپت بش هم نوشت ولی خوب دیگه پایتون به نظرم این دفه خوشدست‌تر بود.)

خلاصه اینکه گفتم شاید به درد کسی بخوره، شاید هم بعدا دوباره خودم لازمش داشته باشم، برای همین می‌زارمش اینجا تا دم دست باشه.

تولید کلمات تصادفی معنادار

برای پر کردن یکی از فیلدهای دیتابیس به یه مجموعه زیادی از کلمه نیاز داشتم تا بتونم دیتابیس رو با کلمات بامعنی پر کنم. مسلما راه‌های زیادی به دست اوردن این اطلاعات هست ولی چیزی که برای من جالب بود این بود که پاسخ مشکل در واقع در خود سیستم من وجود داشت و لازم نبود کار خاصی انجام بدم.

راه حل بسیار ساده بود، فایل usr/share/dict/words که برای چک کردن اسپل توسط برنامه‌های مختلف استفاده می‌شه محتوی اسپل درست کلمات زیادی هست (برای من ۹۹۱۷۱ کلمه بود) پس فقط کافیه این فایل رو خوند و از کلماتش استفاده کرد. مزیتی که این فایل داره اینه که ساختار پیچیده‌ای نداره و یک فایل تکست معمولیه که تو هر خط یک کلمه قرار داده شده. چند خط ابتدایی این فایلی رو اینجا می‌تونید ببینید:

برای این که از این فایل یک کلمه شانسی بکشید بیرون می‌تونید توی شل بزنید:

در اینجا هم این قطعه کوچیک کد پایتون رو قرار دادم، این کد فایل رو تبدیل به یه لیستی از کلمات می‌کنه و اون‌ها رو به هم میریزه، شما هر جا لازم باشه از یکی از این کلمات استفاده کنید کافیه یکی از آیتم‌های لیست رو pop کنید.

اگه به جای کلمات انگلیسی به کلمات فارسی نیاز داشته باشد توی اوبونتو پکیج myspell-fa رو نصب کنید، فایل دیکشنری در آدرس usr/share/myspell/dicts/fa.dic قرار داره.