python код не может найти файл, пока он находится в папке, отмеченной как ресурс root в PyCharm - PullRequest
0 голосов
/ 04 августа 2020

В PyCharm я создал папку с именем test, внутри создал текстовый файл с именем test и пометил папку как содержимое root. Когда я добавил файл python за пределы тестовой папки и попытался получить доступ к файлу test.txt при открытом, он предложил мне имя файла. Но когда я попытался запустить код, он не смог найти файл.

Traceback (most recent call last):
  File "/home/elmo/PycharmProjects/TBC_PAY_API_TESTING/testing.py", line 32, in <module>
    print(open("test.txt").read())
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

Вот как выглядят код и папки (внутри папки tra sh) введите описание изображения здесь

Как исправить? Основная причина, по которой я это делаю, - не писать полный путь для доступа к файлу.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

В своем вопросе вы говорите о двух совершенно разных вещах. Если вы пометите папку как Sources root, это означает, что интерпретатор Python сможет найти модули в этой папке.

Например:

Когда вы напишите собственный модуль, и вы хотите использовать его в другом файле, Python не найдет его автоматически. PYTHONPATH должен содержать путь к папке, содержащей ваш модуль. И на самом деле опция Sources root делает это!

Еще одна вещь, о которой вы упомянули в своем вопросе, - это то, что вы не указали правильный путь в своем коде. Это настоящая ошибка. В вашем коде вы должны указать правильный путь для open. Pycharm - это IDE, но ваш (или другой) интерпретатор Python будет использовать ваш код.

Вы можете решить вашу проблему разными способами.

Например:

Вы можете жестко закодировать путь к вашему текстовому файлу (это совершенно не рекомендуется):

print(open("/home/elmo/PycharmProjects/TBC_PAY_API_TESTING/test/text.txt").read())

Вы можете использовать относительный путь:

print(open("test/text.txt").read())

Вы можете использовать полный путь на основе вашего Python файла (я рекомендую это решение):

import os

dir = os.path.realpath(os.path.dirname(__file__))  # Directory of your Python file
file_path = os.path.join(dir, "test", "test.txt")  # Create the path of the file
print(open(file_path).read())
0 голосов
/ 04 августа 2020

Ваш print(open("test.txt").read()) ищет test.txt в /home/elmo/PycharmProjects/TBC_PAY_API_TESTING/testing.py Вы должны сначала найти свой файл, а затем открыть его)

import os
for root, dirs, files in os.walk('/'):
    for file in files:
        if file.endswith('test.txt'):
            filename = os.path.join(root, file)
            print('Path to the file location -- ' + filename)
            print(open(filename).read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...