【问题标题】:Python hash holding file handlesPython 哈希保存文件句柄
【发布时间】:2011-03-15 19:07:02
【问题描述】:

所以我正在编写一个脚本,该脚本会在运行时自动从 IRC XDCC 机器人下载某些文件。这些请求是异步的,并且可能有不同的数量,具体取决于配置文件,因此我想将文件句柄保存在哈希表或库中,以便可以根据文件发送者是谁以及他们发送的文件轻松引用它们(在触发事件期间读取)。 Python 抱怨说SyntaxError: can't assign to function call 所以我猜它不会像我想要的那样工作。

有更简单的方法吗?我在这里叫错树了吗?

谢谢! -罗素

【问题讨论】:

  • 你能显示产生错误的代码吗?在velocityreviews.com/forums/… 处有关于错误消息的信息
  • 请发布一个sn-p的代码来告诉我们错误是什么。 (lambda: 1)() += 1 可以轻松复制 SyntaxError,但我猜这不是你的问题 :) sscce.org
  • @Mahmoud 这就是问题所在。请参阅我引用的网页。在 C 语言和任何其他语言中都是一样的。赋值的目标必须是一个左值。请注意,(lambda: 1)()[0] += 1 不会生成语法,而是生成运行时错误。
  • SyntaxError 仅表示您输入的内容不是有效的 Python。你试图解决的问题与它无关。所以,看看引用,找到行,如果你想不出来,把它贴出来。
  • 啊!经过一番搜索,我自己找到了答案。

标签: python hashtable irc filehandle


【解决方案1】:

问题是赋值语句的左边必须是一个左值,这是编译器知道有一个内存地址的东西,就像一个变量。在其他编程语言中也是如此。函数的返回值是一个右值,或者一个值。

这些是其他非法分配:

f() = 1
2 = 1
None = 0
[1,2] = []

请注意,以下在语法上是正确的,因为编译器知道如何计算要分配的内存位置的地址:

f().a = None
[1,2][0] = 0

【讨论】:

  • 一个可以在赋值的left边使用的值。
【解决方案2】:

创建一个空哈希:

files = {}

将项目添加到哈希中:

files["gin"] = open('ginpachi.txt','w')
files["ahq"] = open('ahq[DaBomb].txt','w')

像引用普通文件处理程序一样引用它们

files["gin"].close()
...

不幸的是,网络上没有任何关于此的信息(特别是哈希和文件句柄)。 结案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2017-02-08
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多