Я пытаюсь запустить следующий код Python для упражнений
#!/bin/python3
import os
import sys
#
# Complete the maximumDraws function below.
#
def maximumDraws(n):
return n+1
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input())
for t_itr in range(t):
n = int(input())
result = maximumDraws(n)
fptr.write(str(result) + '\n')
fptr.close()
но я получаю это сообщение об ошибке
Traceback (most recent call last):
File "maximumdraws.py", line 13, in <module>
fptr = open(os.environ['OUTPUT_PATH'], 'w')
File "/home/inindekikral/anaconda3/lib/python3.6/os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'OUTPUT_PATH'
Моя операционная система - Linux Mint 19 Cinnamon. Что я должен сделать?
Вы установили переменную окружения OUTPUT_PATH? В bash вы можете установить его, запустив: export OUTPUT_PATH='myfile'
Что ты пытаешься сделать?






KeyError означает, что у элемента нет ключа. Это означает, что os.environ не имеет ключа 'OUTPUT_PATH'.
os.environ позволяет вам получить доступ к переменным среды из вашего скрипта python, похоже, у вас нет переменной среды с именем OUTPUT_PATH. Из терминала вы запускаете свой скрипт python, перед запуском кода python установите переменную среды с именем OUTPUT_PATH, например:
export OUTPUT_PATH = "home/inindekikral/Desktop/output.txt"
Ваш скрипт python создаст файл в этом месте.
он по-прежнему выводит ошибку, я действительно удивлен, что вопрос, который просматривается почти 1000 раз и комментируется несколькими людьми, получает отрицательный голос, а ответ, который даже не решает проблему, получает положительный голос.
@SDE Я объяснил, что делает os.environ и почему op обнаруживает такую ошибку. Я действительно удивлен, как ответ «у вас нет переменной окружения с именем OUTPUT_PATH» не решает проблему. Вам нужно создать переменную среды с именем OUTPUT_PATH, которая показывает путь к файлу, который вы хотите создать, то есть его. Здесь я конкретно ответил в соответствии с ситуацией op, он использует операционную систему Linux и его имя пользователя «inendekikral».
На самом деле, похоже, что это приведет к ошибке IsADirectoryError, поэтому вместо этого он должен использовать просто «output.txt» или «home / inindekikral / Desktop / output.txt».
Я уверен, что есть другие способы сделать это, но для упражнений Hackerrank указатель файла открывался следующим образом:
fptr = open(os.environ['OUTPUT_PATH'], 'w')
... и я хочу, чтобы он просто выводился на стандартный вывод.
Я просто изменил эту строку на
fptr = sys.stdout # stdout is already an open stream
и делает то, что я хочу.
Обратите внимание, что, с одной стороны, os.environ['OUTPUT_PATH'] - это строка, а fptr - указатель на поток / файл.
Варианты:
Если вы хотите записать в файл, вы можете сделать это способом, предложенным выше (установив переменную среды OUTPUT_PATH).
Или вы можете установить os.environ непосредственно в python, например.
os.environ['OUTPUT_PATH'] = 'junk.txt' # before you open the fptr!
Да вы правы, по крайней мере, я из HackerRank :)
вам нужно определить OUTPUT_PATH как экспортированный env. Переменная. Или лучше: используйте аргументы командной строки ...