【问题标题】:Trying to pass a number of bytes to read() via raw_input尝试通过 raw_input 将多个字节传递给 read()
【发布时间】:2012-08-28 14:44:26
【问题描述】:

我为“Zed Shaw 的 Learn Python The Hard Way”获得了额外的荣誉;练习 15 的“额外功劳”告诉你通读 pydoc 文件以查找我可以做的其他文件。我有兴趣弄清楚如何让终端使用“read()”打印出一定数量的文本文件字节。我可以在参数中硬编码要读取多少字节,但是在尝试提示用户定义字节数时我碰壁了。

这是我目前拥有的脚本:

    from sys import argv

    script, filename = argv

    txt = open(filename)

    print "Here's 24 bytes of your file %r:" % filename

    print txt.read(24)

    print """What about an arbitrary, not hard-coded number of bytes? Enter the number
    of bytes you want read out of the txt file at this prompt, as an integer:"""

    how_far = raw_input("> ")

    print txt.read(how_far2) # this format makes sense in my head but obviously isn't the done thing.

终端吐出错误:

"NameError: name 'how_far2' is not defined"

如何提示脚本用户输入字节数,并让脚本读出该字节数?

额外问题:

  1. 我在这里尝试做的事情的实际术语是什么?将变量传递给方法?将变量传递给函数?
  2. 字节数是读取的参数吗?这是正确的术语吗?
  3. 更一般地说,什么是获取 Python 术语词汇表的好地方? Stack Overflow 会推荐任何其他书籍,或者在某处的在线文档中推荐一些书籍?真正寻找没有假设,没有先验知识,“像我五岁一样向我解释”的粒度级别......半小时的网络搜索并没有太大帮助。尽管在网络上进行了大量搜索,但我还没有发现真正将术语汇集到任何一个在线位置。

【问题讨论】:

  • 您可能想查看the official python tutorial
  • 获得“python 术语词汇表”的最明显位置是Python Language Reference,它是标准文档集的一部分。这是一个相当技术性的文档,但它至少提供了使用的术语;您可以使用 Standard Library 文档对此进行补充,该文档在更高级别上解释了所有内容。

标签: python function methods terminology


【解决方案1】:

错误消息是因为您在一个地方使用了how_far,而在另一个地方使用了how_far2

您还需要将how_far 转换为int,然后再将其传递给读取 - 例如使用int(how_far)

您会发现它可以称为传递变量、参数或参数。这些不是 Python 术语,它们是通用编程术语

【讨论】:

  • 这解释了NameError,但是即使OP在两个地方都使用how_far,仍然会出现错误。
  • @mgilson,是的,但是当您学习时,通常最好修复 Python 抱怨的错误。对于read(),下一个错误是TypeError: an integer is required
【解决方案2】:

raw_input 返回一个字符串。 file.read 需要一个整数——您可能只需要在使用之前将 raw_input 的输出转换为一个整数。

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多