В работе с файлами и директориями важно понимать, как правильно указывать пути к файлам. Это знание поможет вам эффективно управлять файлами и папками в различных проектах. В этой лекции мы подробно рассмотрим, что такое пути, директории и как писать пути к файлам в различных ситуациях.
Директория (или папка) — это место, где хранятся файлы и другие директории. Она может содержать файлы или поддиректории, формируя структуру данных в файловой системе.
Путь к файлу — это строка, которая указывает на местоположение файла в файловой системе. Пути могут быть абсолютными или относительными.
Примеры:
C:\Users\Username\Documents\example.txt
/home/username/Documents/example.txt
Documents/example.txt
(относительно текущей директории)Файловая система организована в виде древовидной структуры, где корневая директория (или корень) является начальной точкой, а все другие директории и файлы расположены в иерархии.
Пример файловой структуры:
project/
│
├── src/
│ ├── main.py
│ └── utils.py
│
├── data/
│ ├── input/
│ │ └── data.csv
│ └── output/
│ └── results.txt
│
└── README.md
В зависимости от того, где вы находитесь в файловой системе, пути к файлам могут изменяться. Рассмотрим примеры написания путей из разных директорий.
Если вы находитесь в корневой директории проекта (project
), пути к файлам будут следующие:
src/main.py
: src/main.py
data/input/data.csv
: data/input/data.csv
README.md
: README.md
Пример кода:
# Работа с файлом data.csv из корневой директории
with open('data/input/data.csv', 'r') as file:
content = file.read()
print(content)
src
Если вы находитесь в директории src
, пути к файлам будут следующими:
main.py
: main.py
utils.py
: utils.py
data/input/data.csv
: ../data/input/data.csv
README.md
: ../README.md
Пример кода:
# Работа с файлом data.csv из директории src
with open('../data/input/data.csv', 'r') as file:
content = file.read()
print(content)
data/input
Если вы находитесь в директории data/input
, пути к файлам будут следующими:
data.csv
: data.csv
results.txt
: ../output/results.txt
main.py
: ../../src/main.py
README.md
: ../../README.md
Пример кода:
# Работа с файлом results.txt из директории data/input
with open('../output/results.txt', 'r') as file:
content = file.read()
print(content)
data/output
Если вы находитесь в директории data/output
, пути к файлам будут следующими:
results.txt
: results.txt
data.csv
: ../input/data.csv
main.py
: ../../src/main.py
README.md
: ../../README.md
Пример кода:
# Работа с файлом data.csv из директории data/output
with open('../input/data.csv', 'r') as file:
content = file.read()
print(content)
Теперь рассмотрим, как добавлять новые папки и файлы в нашу древовидную структуру и как к ним обращаться.
data
Предположим, что вы хотите добавить новую директорию archive
в data
и создать в ней файл old_data.csv
.
Обновленная структура:
project/
│
├── src/
│ ├── main.py
│ └── utils.py
│
├── data/
│ ├── input/
│ │ └── data.csv
│ ├── output/
│ │ └── results.txt
│ └── archive/
│ └── old_data.csv
│
└── README.md
Пример кода для создания новой директории и файла:
import os
# Создаем новую директорию archive внутри data
os.makedirs('data/archive', exist_ok=True)
# Создаем новый файл old_data.csv в директории archive
with open('data/archive/old_data.csv', 'w') as file:
file.write('some,old,data\nanother,line')
data/archive/old_data.csv
src
, путь к новому файлу будет: ../data/archive/old_data.csv
data/input
, путь к новому файлу будет: ../archive/old_data.csv
data/output
, путь к новому файлу будет: ../archive/old_data.csv
Пример кода для доступа к новому файлу:
# Работа с файлом old_data.csv из корневой директории
with open('data/archive/old_data.csv', 'r') as file:
content = file.read()
print(content)
Вот таблица с основными понятиями из лекции:
Понятие | Описание | Пример |
---|---|---|
Директория (Папка) | Место для хранения файлов и других директорий, формирующих структуру данных в файловой системе. | Пример: src/ — папка для исходных файлов, которая может содержать поддиректории и файлы, такие как main.py , utils.py . |
Путь к файлу | Строка, указывающая местоположение файла. Абсолютный путь начинается с корневой директории, а относительный — относительно текущей директории. | Абсолютный путь: C:\Users\Username\Documents\example.txt (Windows), /home/username/Documents/example.txt (Linux). Относительный путь: Documents/example.txt (относительно текущей директории). |
Древовидная структура | Иерархия директорий и файлов, организованная в виде дерева, начиная с корневой директории (корня). | Пример структуры: project/src/main.py , project/data/input/data.csv , project/README.md . |
Корневая директория | Начальная точка файловой структуры проекта, содержащая все основные папки и файлы. | Пример: В корневой директории project/ , путь к файлу будет: src/main.py , data/input/data.csv . |
Директория src | Папка для исходных файлов. Пути к файлам могут изменяться в зависимости от местоположения текущей рабочей директории. | Из src/ пути будут такими: main.py , ../data/input/data.csv . |
Директория data/input | Папка для входных данных. | Из data/input пути будут такими: data.csv , ../output/results.txt , ../../src/main.py . |
Директория data/output | Папка для выходных данных. | Из data/output пути будут такими: results.txt , ../input/data.csv , ../../src/main.py . |
Создание новых папок | Добавление новых директорий и файлов в проект. | Создание папки: os.makedirs('data/archive', exist_ok=True) . Создание файла: with open('data/archive/old_data.csv', 'w') as file: file.write('some,old,data') . |
Доступ к новым файлам | Пути к новым файлам зависят от текущей директории. | Пример доступа к файлу из корневой директории: data/archive/old_data.csv , из директории src : ../data/archive/old_data.csv . |
Эта таблица включает основные концепции работы с файловыми путями и примеры кода для доступа к файлам и создания новых директорий.
Понимание и правильное написание путей к файлам — ключ к эффективной работе с файловой системой. Знание того, как изменяются пути в зависимости от текущего местоположения в древовидной структуре, поможет вам избежать ошибок и упростит управление файлами и папками в вашем проекте.
Эта лекция поможет вам решать задачи, так-как делать целое пособие с картинками и тд по тому, как писать пути файлов это полный бред, используйте эту лекцию или информацию в интернете по тому как писать пути, если у вас возникнут трудности.