Скрипт записывает файл в неправильный каталог - PullRequest
0 голосов
/ 22 марта 2019

Я только что испытал странное поведение в Python.

Я создал копию файла script.py в подпапке в папке, содержащей исходный скрипт.

Скрипт в конце экспортирует некоторые данные в текстовый файл, используя:

with open('clayList.2203.txt', 'w',encoding='utf-8') as f:
 for item in claysUniqueList:
  f.write("%s\n" % item)

Проблема в том, что Python записывает новый файл в родительский каталог вместо текущего. Я проверил путь с помощью:

print(sys.path[0])

и правильно печатает текущий путь.

Ответы [ 3 ]

1 голос
/ 22 марта 2019

По умолчанию относительные пути относятся к рабочему каталогу, то есть к каталогу, из которого запускается команда, выполняющая скрипт.

Если вы хотите, чтобы путь был относительным из каталога скриптов, вам придется явно кодировать это поведение:

import os

filepath = os.path.join(os.path.dirname(__file__), 'clayList.2203.txt')
with open(filepath, 'w',encoding='utf-8') as f:
    # ...
1 голос
/ 22 марта 2019

Когда вы запускаете код в Visual Studio, есть опции отладки. Один из них - это каталог для запуска, который называется «Рабочий каталог». (Щелкните правой кнопкой мыши свой проект и перейдите в настройки).

Для запуска из подкаталога вам необходимо изменить это. Если вы хотите начать с подкаталога, введите его вместо этого в «рабочем каталоге», показанном здесь:

enter image description here

0 голосов
/ 22 марта 2019

Путь для создания файла должен быть относительно каталога исполнения

например. ваш pwd является родительским, а ваш скрипт находится в parent / child1 / child2 / script.py, тогда путь к файлу, который будет создан, должен быть ./child1/child2/clayList.2203.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...