У цій статті ми розглянемо, як отримати та змінити робочий каталог у Python. Під час роботи з обробка файлів ви могли помітити, що файли посилаються лише за їхніми назвами, наприклад. «GFG.txt», і якщо файл не знаходиться в каталозі сценарію, Python видає помилку. Концепція Поточний робочий каталог (CWD) тут стає важливим. Розглянемо CWD як папку, всередині якої працює Python. Щоразу, коли файли викликаються лише за їх іменем, Python припускає, що вони починаються з CWD, що означає, що посилання лише за іменем буде успішним, лише якщо файл знаходиться в CWD Python.
Примітка: Папка, у якій виконується сценарій Python, називається поточним каталогом. Це може бути не той шлях, де розташований сценарій Python.
Що таке модуль Python OS?
Python надає модуль ОС для взаємодії з операційною системою. Цей модуль входить до складу стандартного службового модуля Python. Усі функції в модулі OS піднімаються Помилка операційної системи у разі недійсних або недоступних імен файлів і шляхів або інших аргументів, які мають правильний тип, але не приймаються операційною системою.
Python Знайти поточний каталог
Отримайте каталог поточного сценарію Python за допомогою sys.argv[0]
У цьому прикладі ми використали sys.argv[0] щоб отримати шлях до файлу сценарію та os.path.dirname() витягує поточний каталог із шляху.
Python3
import> os> import> sys> script_directory> => os.path.dirname(os.path.abspath(sys.argv[> 0> ]))> print> (script_directory)> |
>
>
Вихід:

Отримайте каталог поточного сценарію Python
Отримайте каталог поточного сценарію Python за допомогою Inspect Module
У цьому прикладі ми використали inspect.getfile(inspect.currentframe()) який повертає шлях до поточного файлу сценарію та os.path.dirname() витягує поточний каталог із шляху.
Python3
import> inspect> import> os> script_directory> => os.path.dirname(os.path.abspath(> > inspect.getfile(inspect.currentframe())))> > print> (script_directory)> |
>
>
Вихід:
створення таблиці Oracle

Отримати каталог поточного сценарію Python
Отримати поточний робочий каталог за допомогою os.getcwd()
У цьому прикладі ми використали os.getcwd() щоб отримати поточний каталог сценарію Python.
Python3
import> os> > print> (> 'File location using os.getcwd():'> , os.getcwd())> |
>
java довжина масиву
>
Вихід:
File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>
Примітка: Використання os.getcwd() не працює належним чином під час запуску коду Python з каталогу, відмінного від сценарію Python.
Неочікуваний результат під час запуску сценарію Python з іншого каталогу, відмінного від сценарію, за допомогою os.getcwd()
Сценарій Python розміщено всередині /home/tuhingfg/Documents/Scripts . Коли ми запускаємо сценарій з тієї самої папки, це дає правильне розташування сценарію. Але коли ми змінюємо наш каталог на інше місце, він виводить розташування цього каталогу. Це відбувається тому os.getcwd() враховує каталог, з якого ми виконуємо сценарій. Виходячи з цього, результат о os.getcwd() також змінюється.
Python3
import> os> > print> (> 'File location using os.getcwd():'> , os.getcwd())> |
>
>
Вихід:

Отримати розташування сценарію за допомогою os.getcwd()
Отримайте розташування сценарію Python за допомогою методу os.path.realpath().
os.path.realpath() можна використовувати для отримання шляху до поточного сценарію Python. Насправді метод os.path.realpath() у Python використовується для отримання канонічного шляху вказаного імені файлу шляхом усунення будь-яких символічних посилань, які зустрічаються в шляху. Спеціальна змінна __файл__ передається до реальний шлях() метод для отримання шляху сценарію Python.
У цьому прикладі os.getcwd() і __файл__ дають два різні результати. Оскільки ми виконуємо сценарій з іншої папки, ніж сценарій, os.getcwd() вивід змінився відповідно до папки виконання сценарію. Але __файл__ генерує постійний результат незалежно від поточного робочого каталогу.
Python3
import> os> > print> (> 'File location using os.getcwd():'> ,> > os.getcwd())> > print> (f> 'File location using __file__ variable:'> +> > '{os.path.realpath(os.path.dirname(__file__))}'> )> |
>
>
Вихід:

Отримайте каталог за допомогою Python
Примітка: __файл__ це шлях до файлу, з якого було завантажено модуль, якщо його було завантажено з файлу.