Рубрики
Без рубрики

Лучший способ обращаться с пути в Python

О чем это? Возможно, вы увидели траги обработки кодов Python, как это. Folder_PA … Теги с Python, Codequality.

О чем это?

Возможно, вы увидели траги обработки кодов Python, как это.

folder_path = 'C:\\users\\dr\\Documents'
# in unix based machines like below
# folder_path = "/home" + "/" + "dr"
file_name = 'test.txt'
file_path = folder_path + '\\' + file_name

with open(file_path) as file_data:
    do_something_with(file_data)

Конечно, это будет работать. Но, если мы хотим, чтобы наша программа работать в других ОС, таких как Mac или Linux, то код не удастся, потому что Windows обрабатывает путь по-разному по сравнению с операционными системами на основе UNIX.

Итак, другой способ использовать Присоединяйтесь к Метод от OS.PATH Модуль, как ниже.

import os
file_path =  os.path.join("C:\\", "users", "dr", "Documents", "test.txt")
print(file_path) # C:\users\dr\Documents

Но лучший способ обращаться с пути будет

Использование пути от pathlib

Сначала давайте импортировать Путь от путь

from pathlib import Path

Затем мы начнем путь, как следует следующим образом, обратите внимание, мы используем / Даже в ОС Windows вместо \\ Отказ

folder_path = Path('C:/Users/dr/Documents')

Затем добавить путь, мы просто должны использовать / нравиться так

file_path = folder_path / file_name

Даже если у нас есть длинные пути, было бы легче написать и прочитать.

long_file_path = root / folder_a / folder_b / filename

Это будет работать должным образом в Windows, Mac & Linux, нам не нужно беспокоиться о \\ или / Отказ

Помимо этого преимущества, Путь Также предоставляет много функций, таких как IS_FILE , IS_DIR С Мкдир , который мы обычно используем из OS.PATH модуль.

# few methods
import Path from pathlib
path = Path("/home/dr")
path.exists() # returns True if folder exists else False
path.home() # "/home/dr"
path.is_dir() # True
path.is_file() # False
path.mkdir() # create folder
# and a lot more

Оригинал: “https://dev.to/dillir07/better-way-to-handle-paths-in-python-3fmj”