用Python输入文件后的用户输入?

时间:2014-11-11 05:07:22

标签: python-3.x

第一年Comp Sci学生来到这里。

我的作业要求我们使用Python制作一个简单的游戏,它使用输入文件来创建游戏世界(2D网格)。然后,您应该通过用户输入提供移动命令。我的程序一次读取一行输入文件以使用:

创建世界
def getFile():
try:
    line = input()
except EOFError:
    line = EOF
return line

...之后它创建一个表示行的列表,每个成员都是行中的一个字符,然后创建一个包含每个列表的列表(相当于带有行和列坐标的网格)。 / p>

问题是,我后来需要输入以移动角色,我不能这样做,因为它仍然想要读取文件输入,文件的最后一行是EOF字符,导致错误。特别是在读取一条线时的EOF"错误。

我怎样才能解决这个问题?

2 个答案:

答案 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)