Python KeyError:“ OUTPUT_PATH”

时间:2018-10-11 12:48:20

标签: python

我正在尝试运行以下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。 我该怎么办?

3 个答案:

答案 0 :(得分:1)

KeyError表示元素没有键。因此,这意味着os.environ没有密钥'OUTPUT_PATH'

答案 1 :(得分:1)

os.environ允许您从python脚本访问环境变量,似乎您没有名称为OUTPUT_PATH的环境变量。从终端运行python脚本,然后在运行python代码之前,设置名称为OUTPUT_PATH的环境变量,例如:

export OUTPUT_PATH="home/inindekikral/Desktop"

您的python脚本将在该位置创建一个文件。

答案 2 :(得分:1)

我确定还有其他方法可以执行此操作,但是对于Hackerrank练习,文件指针是通过以下方式打开的:

fptr = open(os.environ['OUTPUT_PATH'], 'w')

...我希望它只是进入标准输出。

我刚刚将该行更改为

fptr = sys.stdout   # stdout is already an open stream

它可以满足我的要求。

请注意,一方面os.environ['OUTPUT_PATH']是一个字符串,而fptr是一个流/文件指针。

变化:

  1. 如果要写入文件,可以按照上面建议的方式进行操作(设置OUTPUT_PATH环境变量)。

  2. 或者,您可以直接在python中设置os.environ,例如

    os.environ['OUTPUT_PATH'] = 'junk.txt' # before you open the fptr!