第一年Comp Sci学生来到这里。
我的作业要求我们使用Python制作一个简单的游戏,它使用输入文件来创建游戏世界(2D网格)。然后,您应该通过用户输入提供移动命令。我的程序一次读取一行输入文件以使用:
创建世界def getFile():
try:
line = input()
except EOFError:
line = EOF
return line
...之后它创建一个表示行的列表,每个成员都是行中的一个字符,然后创建一个包含每个列表的列表(相当于带有行和列坐标的网格)。 / p>
问题是,我后来需要输入以移动角色,我不能这样做,因为它仍然想要读取文件输入,文件的最后一行是EOF字符,导致错误。特别是在读取一条线时的EOF"错误。
我怎样才能解决这个问题?
答案 0 :(得分:0)
听起来你正在直接从stdin
阅读文件 - 比如:
python3 my_game.py < game_world.txt
相反,您需要将文件名作为参数传递给您的程序,这样stdin
仍将连接到控制台:
python3 my_game.py game_world.txt
然后get_file
看起来更像:
def getFile(file_name):
with open(file_name) as fh:
for line in fh:
return line
答案 1 :(得分:-1)
文件交互是python3,如下所示:
# the open keyword opens a file in read-only mode by default
f = open("path/to/file.txt")
# read all the lines in the file and return them in a list
lines = f.readlines()
#or iterate them at the same time
for line in f:
#now get each character from each line
for char_in_line in line:
#do something
#close file
f.close()
文件的行终止符默认为\ n 如果你想要别的东西你把它作为参数传递给open方法(换行参数。默认=无='\ n'):
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)