在python中使用输入文件对象从文件中读取变量

在python中使用输入文件对象从文件中读取变量,python,file,input,Python,File,Input,所以我认为这是一个我看不见森林的问题。以下是作业: 使用file对象输入,编写从名为 将数据转换为可变基准(确保为基准指定整数值)。 在代码开头打开文件,在代码结尾关闭文件 好的,首先:我认为输入函数是用于将数据分配给对象,比如变量,而不是用于从对象读取数据。那不是read.file\u的名字吗 但我试过了: infile = open('rawdata','r') datum = int(input.infile()) infile.close() 现在第一个问题。。。MyProgrammi

所以我认为这是一个我看不见森林的问题。以下是作业:

使用file对象输入,编写从名为 将数据转换为可变基准(确保为基准指定整数值)。 在代码开头打开文件,在代码结尾关闭文件

好的,首先:我认为输入函数是用于将数据分配给对象,比如变量,而不是用于从对象读取数据。那不是read.file\u的名字吗

但我试过了:

infile = open('rawdata','r')
datum = int(input.infile())
infile.close()
现在第一个问题。。。MyProgrammingLab不想给它评分。我的意思是,我输入代码,单击“提交”,我就会看到“检查”屏幕。就这样。在写这篇文章的时候,我最近一次尝试以“检查”的形式提交已经有11分钟了。它没有给我一个错误,它只是没有我想是的

现在,我不能使用Python来尝试这个程序,因为它正在寻找一段时间,而且我在一台写锁定的学校计算机上,所以即使我的代码是正确的(我怀疑),这个程序也无法运行,因为它既找不到文件rawdata,也无法创建它


所以。。。怎么回事?是我读错了说明书,还是它告诉我要用其他方式输入,然后我才尝试使用它?还是我应该用另一种方法?

你太接近了。您只是稍微错误地使用了文件对象。一旦它打开,您就可以
.read()
读取它,并获取值

它可能看起来像这样

infile = open('rawdata','r')
datum = int(infile.read())
infile.close()

我觉得您的困惑完全是基于问题的措辞——如果您以前没有使用过Python I/O,“文件对象输入”一词肯定会让人困惑。在这种情况下,“文件对象”是
infle
,“输入”应该是rawdata文件,我想。

目前正在学习这个类,并解决了这个问题。这是我对我们所有大学同学的贡献,他们只是想通过考试,哈哈。MPL接受这个答案

input = open('rawdata','r')
datum = int(input.readline())
input.close()

变量的不同命名说明有点模糊,但我将其解释为“调用
open
并将结果分配给名称
input
”。在这种情况下,内置的
input
函数的行为并不重要,因为您完全忽略了它。(以这种方式使内置函数不可访问通常是不好的做法,但我想你必须做些什么才能获得好成绩)需要注意的一点是,
infle
表示打开的文件对象,而不是
input()的方法。
!另一种解释:它意味着“使用文件对象的数据作为输入…”,在这种情况下,内置函数
input
根本不涉及。也许这项任务的真正教训是处理含糊不清的客户要求;-)对,这就是我所想的,除了不使用输入,指令中特别提到要使用输入。它说使用“文件对象输入”,但唯一返回文件对象的方法是
open()
,所以是的。尽管说明书明确告诉我使用输入法,但我不应该使用输入法。具有讽刺意味的是,你编写的代码实际上就是我最初提出的,但后来我试图找出如何使用输入来完成任务。所以我真的可以通过点击提交我的原始代码来节省我2个小时的挫败感。是的,也许值得向你的导师提及一些关于问题陈述的模糊性的事情。特别是如果这是一门入门课程,我不知道这是事实,但从我从导师那里听到的,他们中没有人对MPL在过去一年中所做的改变感到满意,他们只是在倒数合同到期的日子,所以他们不能续签合同。天知道我是。因为
input()
在Python 3中是一个内置函数(注意:这在Python 2中是
raw\u input()
),所以用这种方式重新定义
input
不是一个好主意。完全理解,你是对的,我只是想给出一个对我有用的答案,因为我们正在处理一个孤立的、有点缺陷的、文档记录糟糕的程序,该程序旨在帮助人们学习,但在这个过程中会让他们感到困惑。我试过50种不同的变体,一旦有东西飞起来,我就不会问问题了。我的编程实验室糟透了。你的警告是正确的。好吧,我想这是一个公平的观点,我想在MPL非常有限的环境下,这是一个正确的答案。因此,问题在于,将特定于MPL的“解决方案”留在StackOverflow上,会让他们糟糕的培训影响到更广泛的Python社区。这不是你的错,但这是未来读者应该意识到的。