<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های احمد رضا سرخیل</title>
        <link>https://virgool.io/feed/@ars1364</link>
        <description>من را در لینکدین دنبال کنید : https://www.linkedin.com/in/ahmad-reza-sarkhail-43588695</description>
        <language>fa</language>
        <pubDate>2026-06-07 17:29:27</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/74030/avatar/loKbEP.png?height=120&amp;width=120</url>
            <title>احمد رضا سرخیل</title>
            <link>https://virgool.io/@ars1364</link>
        </image>

                    <item>
                <title>کار با پکیج های پایتون به صورت آفلاین</title>
                <link>https://virgool.io/@ars1364/%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%B1%D9%88%DB%8C-%D8%B3%D8%B1%D9%88%D8%B1-%D8%A8%D8%AF%D9%88%D9%86-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-g1qiy0thwvac</link>
                <description>صورت مساله: می خواهم اجرای یک پروژه را به روی سروری منتقل کنم، به دلیل عدم دسترسی سرور به اینترنت پکیج های برنامه دانلود نمی شوند و پروژه نیز اجرا نمی شودراه حل: فرض میکنیم روی لپتاپ شخصی دسترسی به اینترنت داریم و تمام Toolsها و Libهای مورد استفاده برنامه رو بایستی منتقل کنیم روی سرور، بدون استفاده از اینترنت در مقصدچی یاد میگیریم:نصب pip و SetupTools به صورت آفلاین نصب می شود؟فایل .whl چیست و چگونه نصب می شودکار با پکیج ها در پایتونپیش نیازها:در این مقاله فرض بر این است که محیط کار برنامه ویندوز می باشد و شما دسترسی به اینترنت به همراه فیلتر شکن در یکی از PCها دارید ولی محدودیتی در استفاده از ابزار نیست این سناریو با Anaconda و Spyder هم جواب میده ولی برای مثال پایتون استاندارد و PyCharm رو توضیح میدم. دستورات را در قسمت Terminal نرم افزار PyCharm یا Command Prompt ویندوز می توانید اجرا کنیددانلود پایتون (نسخه مخصوص ویندوز) از اینجا و نسخه رایگان PyCharm از اینجادر صورتی که Python را قبل از PyCharm نصب نمایید به طور پیش فرض تنظیمات Interpreter درست خواهد بود.مراحل انجام:دستور زیر برای استخراج لیست پکیج(Lib)های نصب شده در پروژه­ی باز یا Virtual Environment فعال می باشد:pip freeze &gt; requirements.txtPIPچیست ؟مخفف pip installs packages و به عنوان سیستم مدیریت استفاده و نصب پکیج های نوشته شده به زبان پایتون به شمار می­رود. بسیاری از پکیج ها و بسته های وابسته به آنها را می توان در سایت فهرست بسته ­های پایتون (Python Package Index (PyPI به این آدرس یافتدستور pip freeze &gt; requirements.txt باعث ایجاد فایلی متنی مشابه تصویر زیر از فهرست پکیج ­ها و نسخه ­ آنها می­شودحال به کمک لیست پکیج ها اقدام به دانلود آنها می نماییم، در این مرحله نیازی به اینترنت نداریددر نظر داشته باشید فایلهای مختلفی از نوع zip ،tar.gz و whl در مسیری که دستور را اجرا نمی نمایید به وجود خواهند آمد.پکیج های دانلود شده را کنار پروژه­ ی مورد نظر به مسیر دلخواه روی سروری که اینترنت ندارد کپی کنیدقبل از اینکه بتوانیم نصب پکیج ها را آغاز کنیم نیاز داریم تا PIP را نصب کنیم برای این منظور مراحل زیر را دنبال کنید:1- ابتداPip و setuptools را از اینترنت دانلود کنید:https://pypi.python.org/pypi/setuptoolshttps://pypi.python.org/pypi/pip2- فایلهای دانلود شده را به سرور منتقل و دستورات زیر را در مسیری که فایل اجرایی پایتون وجود دارد اجرا نمایید:دقت نمایید در صورتی که چند پایتون همزمان نصب داشته باشید لازم است تا این مرحله را برای هر کدام مستقلا اجرا نماییدpython pip-19.2.3-py2.py3-none-any.whl/pip install --no-index setuptools-41.2.0-py2.py3-none-any.whlpython pip-19.2.3-py2.py3-none-any.whl/pip install --no-index pip-19.2.3-py2.py3-none-any.whlدر نظر داشته باشید نحوه رفتار با فایلهای whlدرست مثل فایل zip می باشددر انتها به کمک PIP نصب پکیج ها را به صورت آفلاین انجام می دهیم:1- نصب پکیج تکیpip install --no-index --find-links=c:/python/lib pandasنصب پکیج تکی2- نصب پکیج به صورت دسته ایی به کمک فایل requirements.txt که در مراحل قبلی آن را ایجاد کردیم:pip install --no-index --find-links=c:/python/lib -r requirements.txtیکی دیگر از کاربردهای این مقاله رو می توانید از لینک زیر مطالعه بفرمایید:https://websauna.org/docs/tutorials/deployment/freeze.htmlمنابع استفاده شده:https://stackoverflow.com/questions/36132350/install-python-wheel-file-without-using-piphttps://support.telefonicaopencloud.com/en-us/devg/sdk/en-us_topic_0107955974.htmlhttps://pip.pypa.io/en/stable/reference/pip_freeze/</description>
                <category>احمد رضا سرخیل</category>
                <author>احمد رضا سرخیل</author>
                <pubDate>Sat, 12 Oct 2019 12:28:28 +0330</pubDate>
            </item>
                    <item>
                <title>مدیریت فایلها از راه دور با پایتون</title>
                <link>https://virgool.io/@ars1364/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D9%81%D8%A7%DB%8C%D9%84%D9%87%D8%A7-%D8%A7%D8%B2-%D8%B1%D8%A7%D9%87-%D8%AF%D9%88%D8%B1-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-sarngf0d2cdc</link>
                <description>صورت مساله: یه برنامه ی سازمانی دارم که ویندوز سرویس استاندارد نیست و باید دائما در حال اجرا باشه و برخی اوقات نیاز به مانیتورینگ توسط داره به محض اینکه به اخطاری بخوره شروع می کنه داخل شاخه خروجی هر یک ثانیه یک فایل 1 کیلوبایتی تولید میکنه(درخواست دادم تیم نرم افزار درستش کنه ولی هنوز نشده J، بماند !) میتونید حدس بزنید که اگر 1 ساعت دیر برسم سراغش چه اتفاقی سر سرور و فولدر و غیره میاد.راه حل: چند خط کد پایتون، کلاینتی که از طریق شبکه به همه سرورهام دسترسی داشته باشه ،لیست سرورها و شاخه ایی که فایلها داخل اون نگهداری میشوندچی یاد میگیریم؟: 1- خواندن تنظیمات از روی فایل CSV 2- دسترسی به فایلها و فولدرها از راه دور 3- بدست آوردن متاداده های فایل 4- حذف فایل از راه دوراین چند خط کد پایتونی که در موردش صحبت کردیم:import os, csv

finalFilesToRemove = []
with open(&#039;confFile.csv&#039;, &#039;r&#039;, newline=&#039;&#039;) as confFile:
    fileReader = csv.reader(confFile, delimiter=&#039;|&#039;)
    for row in fileReader:
        filePath = &#039;\\\\{0}\\{1}\\&#039;.format(row[0], row[1])
        for r, d, f in os.walk(filePath):
            for file in f:
                fileStat = os.stat(os.path.join(r, file))
                if fileStat.st_size &lt; 1024:
                    finalFilesToRemove.append(os.path.join(r, file))
for f in finalFilesToRemove:
    os.remove(f)توضیح کد:یک آرایه خالی تعریف می کنیم بیرون حلقه Forتا بتونیم تو تمام طول برنامه ازش بهره ببریمفایل Config رو به صورت Readonlyباز می کنیم و اسمش رو میذاریم confFileبه کمک کتابخانه csv ،فایل باز شده رو Parsمیکنیم fileReaderحلقه ای تعریف می کنیم تا به تعداد سطرهای فایل csv ما تکرار شهمسیر فایل رو تعریف میکنیم به این صورت که ابتدا مسیر ثابت رو مینویسیم و مقادیر متغیر و با عدد علامت گذاری می کنیم و بیرون “اونها رو با سطرهای فایل configمقدار دهی می کنیمهر \ کارکتر بعدی خود را خنثی می کند یعنی برای نوشتن دو \ پشت سر هم باید 4 تا \ قرار دهیدیه حلقه دیگه ایجاد می کنیم تا با مسیر داده شده و با کمک کتابخانه osشروع به پیمایش مسیر و پیدا کردن فایل میکنه، در نامگذاری حروف اختصاری استفاده شده به ترتیب زیر است:R=root , d=directories , f=filesحلقه دیگری برای پیمایش فایلهای داخل هر فولدر نیاز داریمحالا مسیر فایل و اسمش رو به متد stat از کتابخانه osمیدهیم و وضعیت فایل رو داخل یک متغیر میریزیم اطلاعات زیادی رو به ما برمیگردونه. میتونید به صورت جداگانه print بگیرید ازش و مقادیری که برمیگردونه رو مشاهده کنیداز مقادیر قبلی برای مثال فعلی فقط حجم فایل رو لازم داریم که با این خط کد اون رو جدا می کنیم و چک میکنیم با سایز مورد نظر اگر فایل شامل این شر می شد اون رو به آرایه ایی از اسم و مسیر فایل منتقل می کنیم تا در انتها پاکش کنیمحلقه ایی ایجاد می کنیم و لیست فایلهای منتظر برای حذف رو یکی یکی پیمایش وآن را پاک میکنیمدر انتها کد کامل به همراه تولید log در قالب فایل txt رو براتون قرار میدمhttps://github.com/ars1364/PythonerizationBoringStuff/blob/master/ManagingFileRemotely.pyنمونه فایل config شامل لیستی از IPسروها و مسیر فولدری که فایلها داخل اون هستندتبدیل برنامه به فایل exe:انتقال فایلها بر روی سرور در یک فولدر کنار هم و سپس اجرای برنامه</description>
                <category>احمد رضا سرخیل</category>
                <author>احمد رضا سرخیل</author>
                <pubDate>Wed, 25 Sep 2019 11:06:22 +0330</pubDate>
            </item>
                    <item>
                <title>متوقف نمودن سرویس های ویندوز از راه دور با پایتون</title>
                <link>https://virgool.io/apieco/%D9%85%D8%AA%D9%88%D9%82%D9%81-%D9%86%D9%85%D9%88%D8%AF%D9%86-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7%DB%8C-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D8%A7%D8%B2-%D8%B1%D8%A7%D9%87-%D8%AF%D9%88%D8%B1-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-ighhcyc5etbk</link>
                <description>صورت مسئله: تعدادی سرور فیزیکی/مجازی در داخل شبکه دارم که ویندوز 2008 دارن، روی هر کدوم تعدادی سرویس ویندوزی با عناوین مختلف نصب هستند که در یک کلمه با یکدیگر مشترک هستند. هر بار به هر دلیلی که بقیه ادمین های ویندوز با اون آشنایی دارند ʕʘ̅͜ʘ̅ʔ مجبور به stop/start این سرویس ها هستم، تصور کنید 65 تا سرور دونه دونه ریموت بزن باز کن، Stop کن و ...راه حل: چند خط کد پایتون، یه مقدار تنظیمات، دسترسی ادمین، لیست سرویسها و IP دستگاهها و هر اطلاعات دیگه ایی که میتونه کمکمون کنه مثل اسم سرور، نام کاربری و رمز عبور ...import wmi
import csv
c = wmi.WMI()
serviceName = &#039;service&#039;
with open(&#039;IPList.csv&#039;, &#039;r&#039;, newline=&#039;&#039;) as confFile:
    csvReader = csv.reader(conf
File, delimiter=&#039;|&#039;)
    for fileLines in csvReader:
        c = wmi.WMI(fileLines[1], user=r&amp;quotadmin&amp;quot, password=&amp;quotadmin1234&amp;quot)
        for service in c.Win32_Service():
            if serviceName.lower() in service.DisplayName.lower():
                print(service.StopService())
نمونه فایل لیست IP ,نام سرور در نظر داشته باشید delimiter اینجا علامت پایپ | در نظر گرفته شده که برای شما قابل تنظیم استخروجی برنامه رو به کمک pyinstaller به این صورت تبدیل به تک فایل exe میکنیم:فایل exe تولید شده به همراه فایل لیست IP و نام سرورها در یک فولدر به روی کلاینتی که به تمام سرورهای ما دسترسی داره منتقل میکنیمبعد از انتقال فایل بر روی کلاینت یک cmd باز کنید ترجیحا با دسترسی ادمین به مسیر فایل کپی شده برید فقط اسم فایل exe رو وارد کنیدتصویر نمونه برای تنها یک سرورخروجی که مشاهده میکنید نتیجه دستور service.StopService می باشد که مرجع آن در این لینک می باشد: https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/stopservice-method-in-class-win32-service لینک دانلود کد کامل:https://github.com/ars1364/PythonerizationBoringStuff/blob/master/ManagingWindowsServices.py</description>
                <category>احمد رضا سرخیل</category>
                <author>احمد رضا سرخیل</author>
                <pubDate>Mon, 23 Sep 2019 17:01:28 +0330</pubDate>
            </item>
            </channel>
</rss>