C:\Users\danie\CAMP-data-processing
├── data
│ └── экспериментальный
│ └── InputFastas
│ └── комбинированные_протеины_IUPRED.fasta
├── шаги_комбинированные
└ ── Combined_3_4.py # Это скрипт, который я запускаю.
Полные пути:
Сценарий, который я запускаю, находится по адресу:
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