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

سرور مجازی NVMe

مقدمه ای بر ماژول سیستم عامل پایتون

0 1
زمان لازم برای مطالعه: 5 دقیقه


در این آموزش روش کار با پایتون را یاد خواهید گرفت os مدول.

معرفی

پایتون یکی از پرکاربردترین زبان‌های اخیر برای کارهای مختلف مانند پردازش داده‌ها، تجزیه و تحلیل داده‌ها و ساخت وب‌سایت است. در این process، وظایف مختلفی وجود دارد که به سیستم عامل وابسته هستند. پایتون به توسعه‌دهنده اجازه می‌دهد تا از چندین عملکرد وابسته به سیستم‌عامل با ماژول پایتون استفاده کند os. این بسته ویژگی های پلتفرم را خلاصه می کند و ارائه می دهد python توابعی برای پیمایش، ایجاد، حذف و اصلاح فایل‌ها و پوشه‌ها. در این آموزش می توان انتظار داشت که یاد بگیرند که چگونه import این بسته، قابلیت های اساسی آن و یک نمونه پروژه در python که از این کتابخانه برای یک کار ادغام داده ها استفاده می کند.

برخی از توابع اساسی

بیایید ماژول را با چند کد مثال بررسی کنیم.

وارد کردن کتابخانه:

import os

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

print(dir(os))

خروجی:

('DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write')

در حال حاضر، با استفاده از getcwd روش، ما می توانیم مسیر دایرکتوری کاری فعلی را بازیابی کنیم.

print(os.getcwd())

خروجی:

C:\Users\hpandya\OneDrive\work\rasanegar\os_python\os_python\Project

لیست پوشه ها و فایل ها

بیایید پوشه‌ها/فایل‌ها را در فهرست فعلی فهرست کنیم listdir:

print(os.listdir())

خروجی:

('Data', 'Population_Data', 'README.md', 'tutorial.py', 'tutorial_v2.py')

همانطور که می بینید، من 2 پوشه دارم: Data و Population_Data. من هم 3 تا فایل دارم: README.md فایل markdown و دو فایل پایتون یعنی tutorial.py و tutorial_v2.py.

برای اینکه کل ساختار درختی پوشه پروژه من را بدست آوریم، اجازه دهید یک تابع بنویسیم و سپس استفاده کنیم os.walk() برای تکرار روی تمام فایل های موجود در هر پوشه دایرکتوری فعلی.



def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        
        if dir!= '.git':
            level = root.replace(startpath, '').count(os.sep)
            indent = ' ' * 4 * (level)
            print('{}{}/'.format(indent, os.path.basename(root)))
            subindent = ' ' * 4 * (level + 1)
            for f in files:
                print('{}{}'.format(subindent, f))

این تابع را با استفاده از مسیر دایرکتوری کاری فعلی فراخوانی کنید، که قبلا روش انجام آن را دیدیم:

startpath = os.getcwd()
list_files(startpath)

خروجی:

Project/
    README.md
    tutorial.py
    tutorial_v2.py
    Data/
        uscitiesv1.4.csv
    Population_Data/
        Alabama/
            Alabama_population.csv
        Alaska/
            Alaska_population.csv
        Arizona/
            Arizona_population.csv
        Arkansas/
            Arkansas_population.csv
        California/
            California_population.csv
        Colorado/
            Colorado_population.csv
        Connecticut/
            Connecticut_population.csv
        Delaware/
            Delaware_population.csv
        ...

توجه: خروجی برای اختصار کوتاه شده است.

پیشنهاد می‌کنیم بخوانید:  بررسی کنید که آیا یک رشته حاوی عنصری از یک لیست در پایتون است یا خیر

همانطور که از خروجی مشاهده می شود، نام پوشه ها با یک خاتمه می یابد / و فایل های داخل پوشه ها با چهار فاصله در سمت راست فرورفته شده اند. این Data پوشه دارای یک فایل CSV به نام است uscitiesv1.4.csv. این فایل دارای اطلاعات مربوط به جمعیت هر شهر در ایالات متحده است. پوشه Population_Data دارای پوشه‌هایی برای ایالات، حاوی فایل‌های CSV مجزا برای داده‌های جمعیت برای هر ایالت، استخراج‌شده از uscitiesv1.4.csv.

دایرکتوری کاری را تغییر دهید

بیایید دایرکتوری کاری را تغییر دهیم و با وضعیت “نیویورک” وارد فهرست راهنمای داده ها شویم.

os.chdir('Population_Data/New York')

حالا بیایید اجرا کنیم list_files روش دوباره، اما در این دایرکتوری.

list_files(os.getcwd())

خروجی:

New York/
    New York_population.csv

همانطور که می بینید، ما وارد شده ایم New York پوشه زیر Population_Data پوشه

ساختار دایرکتوری تک و تودرتو ایجاد کنید

حال، بیایید یک دایرکتوری جدید به نام ایجاد کنیم testdir در این دایرکتوری

os.mkdir('testdir')
list_files(os.getcwd())

خروجی:

New York/
    New York_population.csv
    testdir/

همانطور که می بینید، دایرکتوری جدید را در فهرست کاری فعلی ایجاد می کند.

بیایید یک دایرکتوری تودرتو با 2 سطح ایجاد کنیم.

os.mkdir('level1dir/level2dir')

خروجی:

Traceback (most recent call last):

  File "<ipython-input-12-ac5055572301>", line 1, in <module>
    os.mkdir('level1dir/level2dir')

FileNotFoundError: (WinError 3) The system cannot find the path specified: 'level1dir/level2dir'

یک خطا دریافت می کنیم. به طور خاص، یک را دریافت می کنیم FileNotFoundError. شاید تعجب کنید که چرا الف FileNotFound هنگامی که ما در حال تلاش برای ایجاد یک فهرست هستیم.

دلیل: ماژول پایتون به دنبال دایرکتوری نامیده می شود level1dir برای ایجاد دایرکتوری level2dir. از آنجا که level1dir وجود ندارد، در وهله اول، a را می اندازد FileNotFoundError.

برای اهدافی مانند این، mkdirs() به جای آن از تابع استفاده می شود که می تواند چندین دایرکتوری را به صورت بازگشتی ایجاد کند.

os.makedirs('level1dir/level2dir')

درخت دایرکتوری فعلی را بررسی کنید،

list_files(os.getcwd())

خروجی:

New York/
    New York_population.csv
    level1dir/
        level2dir/
    testdir/

همانطور که می بینیم، اکنون دو زیر شاخه در زیر داریم New York پوشه testdir و level1dir. level1dir یک دایرکتوری در زیر دارد به نام level2dir.

دایرکتوری های منفرد و چندگانه را به صورت بازگشتی حذف کنید

این os ماژول همچنین روش هایی برای تغییر یا حذف دایرکتوری ها داشت که در اینجا نشان خواهم داد.

پیشنهاد می‌کنیم بخوانید:  بایت های پایتون به رشته – روش تبدیل یک Str به بایت و دوباره برگشت

حالا، بیایید دایرکتوری هایی را که با استفاده از آن ایجاد کرده ایم حذف کنیم rmdir:

os.rmdir('testdir')

درخت دایرکتوری فعلی را بررسی کنید تا مطمئن شوید که دایرکتوری دیگر وجود ندارد:

list_files(os.getcwd())

خروجی:

New York/
    New York_population.csv
    level1dir/
        level2dir/

همانطور که می بینید، testdir حذف شده است.

بیایید سعی کنیم ساختار دایرکتوری تودرتو را حذف کنیم level1dir و level2dir.

os.rmdir('level1dir')

خروجی:

OSError
Traceback (most recent call last)
<ipython-input-14-690e535bcf2c> in <module>()
----> 1 os.rmdir('level1dir')

OSError: (WinError 145) The directory is not empty: 'level1dir'

همانطور که مشاهده می شود، این یک را پرتاب می کند OSError و به درستی. می گوید که level1dir دایرکتوری خالی نیست این درست است زیرا دارد level2dir زیر آن

با rmdir روش حذف یک دایرکتوری غیر خالی مشابه یونیکس ممکن نیست command-line نسخه

درست مثل makedirs() روش، بیایید امتحان کنیم rmdirs()، که به صورت بازگشتی دایرکتوری ها را در ساختار درختی حذف می کند.

os.removedirs('level1dir/level2dir')

بیایید دوباره ساختار درخت دایرکتوری را ببینیم:

list_files(os.getcwd())

خروجی:

New York/
    New York_population.csv

این ما را به وضعیت قبلی دایرکتوری می رساند.

به عنوان مثال با پردازش داده ها

تاکنون روش مشاهده، ایجاد و حذف یک ساختار دایرکتوری تودرتو را بررسی کرده ایم. حال بیایید نمونه ای از چگونگی os ماژول به پردازش داده ها کمک می کند.

برای آن اجازه دهید در ساختار دایرکتوری یک سطح بالاتر برویم.

os.chdir('../')

با آن، اجازه دهید دوباره ساختار درخت دایرکتوری را مشاهده کنیم.

list_files(os.getcwd())

خروجی:

Population_Data/
    Alabama/
        Alabama_population.csv
    Alaska/
        Alaska_population.csv
    Arizona/
        Arizona_population.csv
    Arkansas/
        Arkansas_population.csv
    California/
        California_population.csv
    Colorado/
        Colorado_population.csv
    Connecticut/
        Connecticut_population.csv
    Delaware/
        Delaware_population.csv
...

توجه: خروجی برای اختصار کوتاه شده است.

بیایید داده‌های همه حالت‌ها را ادغام کنیم، روی فهرست هر ایالت تکرار کنیم و فایل‌های CSV را به همین ترتیب ادغام کنیم.

import os
import pandas as pd


list_states = ()


for root, dirs, files in os.walk(os.getcwd()):
    if files:
        list_states.append(pd.read_csv(root+'/'+files(0), index_col=None))


merge_data = pd.concat(list_states(1:), sort=False)

تا حدی با تشکر از os ماژول ما توانستیم ایجاد کنیم merge_data، که یک چارچوب داده حاوی داده های جمعیت از هر ایالت است.

نتیجه

در این مقاله به طور مختصر به بررسی قابلیت های مختلف داخلی پایتون پرداختیم os مدول. ما همچنین یک مثال کوتاه از روش استفاده از ماژول در دنیای علم داده و تجزیه و تحلیل را دیدیم. درک آن مهم است os چیزهای بیشتری برای ارائه دارد و مبتنی است روی نیاز توسعه دهنده می تواند منطق بسیار پیچیده تری ایجاد کند.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-24 08:31:04

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

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

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