از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نوشتن روی یک فایل با پایتون print() تابع
سرفصلهای مطلب
معرفی
پایتون print()
تابع معمولاً برای نمایش متن یا در command-line یا در مترجم تعاملی، بسته به روی روش اجرای برنامه پایتون با این حال، ما میتوانیم رفتار آن را تغییر دهیم تا متنی را در یک فایل بنویسیم console.
در این مقاله، راههای زیادی را که میتوانیم با استفاده از آن در یک فایل بنویسیم، بررسی میکنیم print()
تابع.
تغییر مسیر خروجی اسکریپت پایتون در ترمینال
راه سریع و کثیف برای تغییر مسیر خروجی اسکریپت پایتون مستقیماً از آن است command-line در حین اجرای اسکریپت
به عنوان مثال، اگر یک فایل پایتون به نام داشتیم hello.py
با مطالب زیر:
print("Hallo")
ما می توانیم خروجی فایل را در پوسته با استفاده از یک براکت زاویه راست هدایت کنیم:
$ python3 hello.py > output.txt
اگر تازه ایجاد شده خود را باز کنیم output.txt
، مطالب زیر را مشاهده خواهیم کرد:
Hallo
با این حال، با این روش، تمام خروجی اسکریپت در یک فایل نوشته می شود. انجام این تغییر مسیر از داخل خود اسکریپت پایتون اغلب انعطاف پذیرتر است.
تغییر مسیر جریان خروجی استاندارد
در پایتون، print()
عملکرد انعطاف پذیرتر از آن چیزی است که فکر می کنید. به گونه ای سخت کدگذاری نشده بود که متن مشخص شده را فقط روی نمایشگر بنویسید. در عوض، متن را به مکانی به نام the ارسال می کند جریان خروجی استاندارد، همچنین به عنوان شناخته شده است stdout
.
تمام سیستم های یونیکس دارای سه لوله اصلی هستند – لوله ورودی استاندارد (stdin
) لوله خروجی استاندارد (stdout
) و لوله خطای استاندارد (stderr
).
به طور پیش فرض، لوله خروجی استاندارد به پنجره تعاملی مورد استفاده برای اجرای برنامه اشاره می کند، بنابراین ما معمولاً متن چاپ شده را می بینیم. روی صفحه نمایش با این حال، خروجی استاندارد را می توان به مکان های دیگر، مانند فایل ها، برای راحتی هدایت کرد.
اگر خروجی استاندارد به یک فایل خاص هدایت شود، متن مشخص شده در print()
تابع به جای نمایش در آن فایل نوشته می شود روی صفحه نمایش
در پایتون، یک مرجع به خروجی استاندارد را می توان با استفاده از stdout
موضوع از sys
مدول. این هست یک شی فایل مانند، به این معنی که روش هایی دارد که به پایتون اجازه می دهد مانند یک فایل واقعی از روی آن بخواند و بنویسد.
بیایید نمونه ای را ببینیم که در آن تغییر می کنیم stdout
فایل باشد:
import sys
print('This message will be displayed روی the screen.')
original_stdout = sys.stdout
with open('filename.txt', 'w') as f:
sys.stdout = f
print('This message will be written to a file.')
sys.stdout = original_stdout
این print()
تابع آرگومان رشته ارائه شده را می گیرد، یک کاراکتر خط جدید را به انتها اضافه می کند و the را فراخوانی می کند stdout.write()
روش نوشتن آن در خروجی استاندارد
در مثال بالا ابتدا ما print یک خط متن همانطور که ما به آن عادت کرده ایم، که در قسمت نمایش داده می شود console وقتی فایل را اجرا می کنیم. بعد دوباره تعیین تکلیف کردیم stdout
به شی فایل سفارشی ما – f
. از آنجایی که یک شی فایل دارای یک کاملا معتبر است write()
روش، مقدار چاپ شده ما بدون مشکل در فایل نوشته می شود.
توجه داشته باشید که تمرین خوبی است که مقدار اصلی خروجی استاندارد را قبل از تغییر آن در یک متغیر ذخیره کنید. به این ترتیب میتوانیم خروجی استاندارد را پس از اتمام کار به مقدار اولیه آن بازنشانی کنیم، که میتواند به جلوگیری از سردرگمی کمک کند.
بیایید کد را در یک فایل جدید ذخیره کنیم، printToFile.py
. و سپس، بیایید آن را اجرا کنیم:
$ python3 printToFile.py
خروجی زیر را در ترمینال خواهیم دید:
This message will be displayed روی the screen.
و اسکریپت یک فایل جدید به نام ایجاد می کند filename.txt
با مطالب زیر:
This message will be written to a file.
شما با موفقیت داده ها را از جریان خروجی استاندارد به یک فایل هدایت کردید. بیایید ببینیم چگونه میتوانیم این کار را با یک شیء محبوب فایل مانند دیگر که به خطاهای برنامهنویسی اختصاص داده شده است، انجام دهیم.
تغییر مسیر جریان خطای استاندارد
در پایتون، خطاها در برنامه نوشته می شوند جریان خطای استاندارد، همچنین به عنوان شناخته شده است stderr
. این نیز به طور پیش فرض به پنجره تعاملی است، اما می تواند از طریق تغییر کند sys.stderr
هدف – شی. اگر می خواستیم print ارزش ها به stderr
، ما به سادگی می توانیم آن را تغییر مسیر دهیم sys.stdout
برای اشاره به sys.stderr
.
یک فایل به نام ایجاد کنید printToStderr.py
و کد زیر را اضافه کنید:
import sys
print('This message will be displayed via standard output.')
original_stdout = sys.stdout
sys.stdout = sys.stderr
print('This message will be displayed via the standard error.')
sys.stdout = original_stdout
این مثال تقریباً مشابه نمونه قبلی است، با این تفاوت که به جای اینکه جریان خروجی استاندارد را به یک فایل هدایت کنیم، آن را به جریان خطای استاندارد هدایت می کنیم. اگر جریان خطای استاندارد نیز به جای دیگری هدایت شود، خروجی به جای نمایشگر به آن مکان ارسال میشود.
بیایید این فایل را اجرا کنیم:
$ python3 printToStderr.py
خروجی ما نشان می دهد:
This message will be displayed via standard output.
This message will be displayed via the standard error.
در حالی که ممکن است برای ما مانند خروجی معمولی به نظر برسد، برای کامپیوتر از طریق خطوط لوله مختلف نمایش داده می شود.
چاپ با استفاده از پارامتر “فایل”.
در مثالهای قبلی، ما به صراحت خروجی استاندارد را با تغییر دادن به یک شی فایل مانند دیگر هدایت کردیم stdout
هدف – شی. با این حال، برای راحتی، می توانیم این کار را مستقیماً از داخل انجام دهیم print()
با تعیین محل خروجی با file
پارامتر:
مثلاً اگر می خواستیم print مستقیماً به یک فایل بدون تغییر کل اسکریپت stdout
، می نویسیم:
import sys
print('This message will be displayed روی the screen.')
with open('filename.txt', 'w') as f:
print('This message will be written to a file.', file=f)
از آنجایی که با تغییر مسیر خروجی استاندارد به طور صریح مشکلی نداشتیم، دیگر لازم نیست آن را به مقدار اولیه خود بازنشانی کنیم. در نتیجه، این روش ترجیحی برای نوشتن در فایلی است print()
تابع.
توجه داشته باشید: اگرچه نام پارامتر است file
، به یاد داشته باشید که با هر شیء فایل مانندی کار می کند. اگر می خواستی print به stderr
به عنوان مثال، شما را تغییر دهید print()
بیانیه به:
print('This message will be written to stderr.', file=sys.stderr)
نتیجه
در این مقاله به تغییر مسیر پایتون پرداختیم print()
خروجی تابع با استفاده از روش های مختلف این روش ها شامل تغییر مسیر خروجی یک اسکریپت پایتون از command-line، تغییر مسیر خروجی استاندارد در اسکریپت های پایتون، و تعیین یک شی فایل مانند در file
پارامتر به طور مستقیم در print()
تابع.
درباره نویسنده
این مقاله توسط Jacob Stopak، یک توسعهدهنده نرمافزار و مشاور با اشتیاق برای کمک به دیگران برای بهبود زندگی خود از طریق کد نوشته شده است. یعقوب نویسنده کتاب است راهنمای برنامهنویسی ضروری برای توسعهدهندگان، کتابی مقدماتی که مفاهیم و ابزارهای ضروری کدنویسی را پوشش می دهد. شامل فصول است روی معماری اولیه کامپیوتر، اینترنت، خط فرمان، HTML، CSS، جاوا اسکریپت، پایتون، جاوا، پایگاه داده/SQL، Git و غیره.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-17 13:09:06