【问题标题】:using the input file object to read a variable from a file in python使用输入文件对象从python中的文件中读取变量
【发布时间】:2017-10-17 17:06:14
【问题描述】:

所以我认为这是我只见树木不见森林的问题之一。这是作业:

使用文件对象输入,编写从名为的文件中读取整数的代码 rawdata 到变量数据中(确保将整数值分配给数据)。 在代码的开头打开文件,并在最后关闭它。

好的,所以第一件事:我认为输入函数是用于将数据分配给诸如变量之类的对象,而不是用于从对象中读取数据。那不是 read.file_name 吗?

但我给了它一个机会:

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

现在第一个问题... MyProgrammingLab 不想给它评分。我的意思是我输入代码,单击“提交”,然后我得到“检查”屏幕。就是这样。在撰写本文时,我最近一次提交的尝试是“检查”了 11 分钟。它没有给我一个错误,它只是没有......我猜是“检查”。

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

那么……有什么关系?我是在阅读说明错误还是它告诉我以其他方式使用输入然后我尝试使用它?还是我应该使用不同的方法?

【问题讨论】:

  • 变量的不同命名
  • 说明有点模糊,但我将它们解释为“调用open 并将结果分配给名称input”。在这种情况下,内置 input 函数的行为并不重要,因为您完全掩盖了它。 (以这种方式使内置函数无法访问通常是不好的做法,但我想,做你必须做的事情以获得好成绩)
  • 需要注意的一点,infile 代表打开的文件对象,并不是input() 的方法!
  • 另一种解释:意思是“使用来自文件对象的数据作为输入......”,在这种情况下,内置函数input根本不涉及。
  • 也许这个任务的真正教训是处理模棱两可的客户需求;-)

标签: python file input


【解决方案1】:

你离得很近。您只是稍微不正确地使用文件对象。打开后,您只需.read() 即可获取价值。

它可能看起来像这样

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

我觉得您的困惑纯粹是基于问题的措辞——如果您以前没有使用过 Python I/O,那么“文件对象输入”一词肯定会让人困惑。在这种情况下,“文件对象”是infile,而“输入”是原始数据文件,我想。

【讨论】:

  • 对,这就是我的想法,只是不使用输入,说明特别说明要使用。
  • 它说使用“​​文件对象输入”,但返回文件对象的唯一方法是open()
  • 是的。尽管说明明确告诉我使用输入,但我不应该使用输入。具有讽刺意味的是,您提供的代码实际上是我最初想出的,但后来试图弄清楚如何使用输入来解决分配问题。所以我真的可以通过在我的原始代码上点击提交来节省 2 个小时的挫败感。
  • 是的,可能值得向您的讲师提及问题陈述的模糊性。特别是如果这是一门入门课程
  • 我不知道这个事实,但从我从导师那里听到的,他们都不满意 MPL 在过去一年中所做的改变,他们只是倒计时,直到合同到期,因此他们无法续签。上帝知道我是。
【解决方案2】:

目前正在学习这门课并想通了这一点。这是我对我们所有试图通过它的大学窥视者的贡献,大声笑。 MPL 接受这个答案。

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

【讨论】:

  • 由于input()是Python 3中的内置函数(注意:这是Python 2中的raw_input()),以这种方式重新定义input并不是一个好主意。
  • 完全明白,你是对的,我只是想给出对我有用的答案,因为我们正在处理一个孤立的有点错误且记录不充分的程序,旨在帮助人们学习但让他们感到困惑过程。我尝试了 50 种不同的变体,一旦有东西飞起来,我就不会问问题了。我的编程实验室很糟糕。您的警告有效。
  • 好吧,我想这是一个公平的观点,我想这是在 MPL 非常有限的上下文中的正确答案。那么问题是,将特定于 MPL 的“解决方案”留在 StackOverflow 上会导致他们缺乏培训,从而感染更广泛的 Python 社区。不过,这不是你的错,但这是未来读者应该注意的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 2014-06-30
  • 1970-01-01
  • 2015-06-11
相关资源
最近更新 更多