我正在尝试运行以下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。 我该怎么办?
答案 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
是一个流/文件指针。
变化:
如果要写入文件,可以按照上面建议的方式进行操作(设置OUTPUT_PATH
环境变量)。
或者,您可以直接在python中设置os.environ,例如
os.environ['OUTPUT_PATH'] = 'junk.txt' # before you open the fptr!