как в kaggle сделать папку по умолчанию на 1 уровн...
Created on: February 21, 2026
Answered using GPT-5.2 Thinking by Chat01
Created on: February 21, 2026
Answered using GPT-5.2 Thinking by Chat01
как в kaggle сделать папку по умолчанию на 1 уровне в среде исполнения?
То есть чтобы все, что было в /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter
было как из под текущего уровня, то есть "/"
В Kaggle “сделать так, чтобы глубокая папка стала корнем /” нельзя: / — это реальная корневая ФС контейнера, её не переопределить. Но есть 2 рабочих обходных варианта (обычно их и используют).
Тогда все относительные пути будут считаться от нужной директории.
В ноутбуке (Jupyter) — лучше так:
pythonimport os target = "/kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter" os.chdir(target) print("PWD =", os.getcwd())
Или магией:
python%cd /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter
Минус: содержимое не “появится” в
/, просто вы будете внутри этой папки как в “дефолтной”.
/kaggle/working через symlink (самый удобный)/kaggle/input read-only, а /kaggle/working — место, где можно создавать ссылки/файлы.
bashln -s /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter /kaggle/working/project ls -la /kaggle/working/project
Теперь можно работать как будто “рядом”:
/kaggle/working/project/....)Можно насоздавать ссылки на содержимое:
bashcd /kaggle/working for f in /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter/*; do ln -s "$f" . done ls -la
Плюс: всё “как в текущей папке”.
Минус: если там много файлов/папок — верхний уровень засорится.
%cd / os.chdir)/kaggle/working)Если скажете, как именно вы потом обращаетесь к файлам (обучение модели, импорт модулей, конфиги с относительными путями и т.п.), подскажу самый “чистый” вариант под ваш кейс.
Сделал через %, спасибо
Теперь пытаюсь
!python prepare_unified.py --out_dir data/unified
--use_juliet --use_devign --use_bigvul --use_megavul
--max_megavul 200000
но получаю
Traceback (most recent call last):
File "/usr/lib/python3.12/pathlib.py", line 1311, in mkdir
os.mkdir(self, mode)
FileNotFoundError: [Errno 2] No such file or directory: 'data/unified'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter/prepare_unified.py", line 517, in <module>
main()
File "/kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter/prepare_unified.py", line 443, in main
ensure_dir(out_dir)
File "/kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter/prepare_unified.py", line 70, in ensure_dir
p.mkdir(parents=True, exist_ok=True)
File "/usr/lib/python3.12/pathlib.py", line 1315, in mkdir
self.parent.mkdir(parents=True, exist_ok=True)
File "/usr/lib/python3.12/pathlib.py", line 1311, in mkdir
os.mkdir(self, mode)
OSError: [Errno 30] Read-only file system: 'data'
Если что мне всю папку ты написал в другой ветке, так что сомневаюсь, что ошибка в коде.
Это как раз не баг кода, а особенность Kaggle: всё, что внутри /kaggle/input — read-only. А вы после %cd .../ailint_diploma_starter запускаете скрипт из read-only каталога, и он пытается создать data/unified рядом с собой, т.е. внутри /kaggle/input/..., поэтому и:
OSError: [Errno 30] Read-only file system: 'data'
Нужно писать выход в /kaggle/working (или /kaggle/temp).
bash!python /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter/prepare_unified.py \ --out_dir /kaggle/working/data/unified \ --use_juliet --use_devign --use_bigvul --use_megavul \ --max_megavul 200000
(Можно и так: --out_dir /kaggle/working/unified.)
bash!cp -r /kaggle/input/models/renesta/lintbs/pytorch/default/1/ailint_diploma_starter /kaggle/working/ailint_diploma_starter %cd /kaggle/working/ailint_diploma_starter !python prepare_unified.py --out_dir data/unified \ --use_juliet --use_devign --use_bigvul --use_megavul \ --max_megavul 200000
Так у вас и data/... будет создаваться нормально, и любые другие относительные записи (логи/кэши/артефакты) тоже не упрутся в read-only.
bash!pwd !ls -ld .
Если путь начинается с /kaggle/input/... — туда писать нельзя.
Если после исправления вылетит следующая ошибка “read-only” уже на другом пути — скиньте текст, подскажу, какой ещё каталог скрипт пытается писать (иногда есть кэш/лог по умолчанию помимо --out_dir).