Код: Выделить всё
C:\\Users\\danie\\CAMP-data-processing\
├── data\
│ └── experimental\
│ └── InputFastas\
│ └── combined_proteins_IUPRED.fasta
├── steps_combined\
└── combined_3_4.py # This is the script I'm running
Сценарий, который я запускаю, находится по адресу:
Код: Выделить всё
C:\\Users\\danie\\CAMP-data-processing\\steps_combined\\combined_3_4.py
Код: Выделить всё
C:\\Users\\danie\\CAMP-data-processing\\data\\experimental\\InputFastas\\combined_proteins_IUPRED.fasta
Я пытаюсь использовать относительный путь для доступа к файлу. Ниже приведен код, который я использую для создания пути и проверки существования файла:
Код: Выделить всё
import os
Код: Выделить всё
root_directory = "../data/experimental/"filename = "combined_proteins_IUPRED"fasta_filename = root_directory + "InputFastas/" + filename + ".fasta"
Код: Выделить всё
print(f"Checking path: {fasta_filename}")
Код: Выделить всё
if os.path.exists(fasta_filename): print("File exists!") else: print("File does NOT exist.")
Когда я запускаю этот код, я получаю следующий результат:
Проверка пути: ../data/experimental/InputFastas/combined_proteins_IUPRED .fasta
Файл НЕ существует.
Однако файл определенно существует в этом месте:
C:\Users\danie\CAMP-data-processing\data\experimental\InputFastas\combined_proteins_IUPRED. fasta
Использование косой черты (/) вместо обратной косой черты (\) для путей в Python.
Использование os.path.join() для создания пути к файлу, чтобы гарантировать, что косые черты корректно обрабатываются в разных операционных системах.
Проверено на наличие опечаток или проблем с чувствительностью к регистру в именах каталогов и файлов.
Для проверки распечатал полный путь, он выглядит правильно: ../data/experimental/ InputFastas/combined_proteins_IUPRED.fasta.
Абсолютный путь:
Когда я вручную указываю абсолютный путь, как показано ниже, он работает отлично:
Код: Выделить всё
fasta_filename = "C:/Users/danie/CAMP-data-processing/data/experimental/InputFastas/combined_proteins_IUPRED.fasta"
Код: Выделить всё
if os.path.exists(fasta_filename):print("File exists!")else:print("File does NOT exist.")With the absolute path, I get:`
**
Вопрос:
Почему в этом случае не работает относительный путь и как могу ли я устранить ошибку FileNotFoundError при использовании относительных путей в Windows?**
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-paths-on