【发布时间】:2009-06-25 23:11:49
【问题描述】:
我有一个非常简单的 python 脚本应该扫描一个文本文件,该文件包含格式为 id='value' 的行并将他们成一个字典。 python模块名为chval.py,输入文件为in.txt。这是代码:
import os,sys
from os import *
from sys import *
vals = {}
f = open(sys.argv[1], 'r')
for line in val_f:
t = line.split('=')
t[1].strip('\'')
vals.append(t[0], t[1])
print vals
f.close()
当我尝试运行它时,我得到:
回溯(最近一次通话最后一次):
文件“chval.py”,第 9 行,在? f = open(sys.argv[1], 'r') TypeError: an integer is required
我正在使用 python 2.4... 因为我一直面临着不使用任何更新的挑战,关于 open() 有什么我不知道的吗?为什么它需要一个整数?
该行之后的任何内容都未经测试。简而言之:为什么它会给我错误,我该如何解决?
【问题讨论】:
-
您的脚本中存在错误。 vals 是一个字典,它没有 append 方法。您只想分配 vals[t[0]]=t[1]
-
另外,它应该是“for line in f:”,而不是 val_f
-
是的,sev,我已经完成并在中途更改了我的变量...感谢您指出这一点。
-
所以我在我的问题中添加了另一个问题,即我收到“找不到文件错误”我正在工作的机器设置为隐藏扩展名,因此该文件被称为 in.txt。 txt 而不仅仅是 in.txt
-
是的,我的评论不清楚,我最初收到一个错误,即 in.txt 文件不存在,但在我看来“那是不可能的!”所以我开始把东西扔进我的代码中。其中一个是“from os import *”,它带来了一个不同的错误,我认为我已经解决了一个问题以找到另一个问题。在回答了这个问题后,我的代码恢复了原来的错误。所以我编辑了我的问题来解决这个问题,在发现我的机器没有显示扩展并且 in.txt 确实不存在后,我重新编辑了我的问题并留下了我之前的评论,以防它被阅读。
标签: python file-io integer argv