وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

نوشتن روی یک فایل با پایتون print() تابع

0 22
زمان لازم برای مطالعه: 4 دقیقه


معرفی

پایتون 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 مدول. این هست یک شی فایل مانند، به این معنی که روش هایی دارد که به پایتون اجازه می دهد مانند یک فایل واقعی از روی آن بخواند و بنویسد.

پیشنهاد می‌کنیم بخوانید:  آموزش کتابخانه zlib پایتون

بیایید نمونه ای را ببینیم که در آن تغییر می کنیم 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 

این مثال تقریباً مشابه نمونه قبلی است، با این تفاوت که به جای اینکه جریان خروجی استاندارد را به یک فایل هدایت کنیم، آن را به جریان خطای استاندارد هدایت می کنیم. اگر جریان خطای استاندارد نیز به جای دیگری هدایت شود، خروجی به جای نمایشگر به آن مکان ارسال می‌شود.

پیشنهاد می‌کنیم بخوانید:  تقسیم، ادغام و چرخش اسناد PDF در پایتون با borb

بیایید این فایل را اجرا کنیم:

$ 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید