Python 是否需要整数?开()
我有一个非常简单的python脚本,应该扫描一个文本文件,其中包含格式为id='value'的行,并将它们放入dict中。python模块称为chval.py,输入文件为in.txt。代码如下:Python 是否需要整数?开(),python,file-io,integer,argv,Python,File Io,Integer,Argv,我有一个非常简单的python脚本,应该扫描一个文本文件,其中包含格式为id='value'的行,并将它们放入dict中。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('\'')
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=打开(sys.argv[1],'r')类型错误:需要整数 我正在使用python 2.4。。。因为我被要求不要使用任何更新的东西,所以open()有什么我不知道的吗?为什么它需要一个整数
这条线之后的任何东西都是未经测试的。简而言之:为什么它会给我错误,我该如何修复它?因为您从os import*中执行了
,所以您(偶然)使用的是os.open,它确实需要一个整数标志,而不是文本“r”或“w”。去掉那一行,你就会克服错误。不要在没有充分理由的情况下从任何地方导入代码
您的代码使用的是os.open()函数,而不是内置的open()函数。如果确实要使用os.open(),请执行导入操作系统
,然后调用os.open(..)
。无论您想调用哪个open,请阅读文档,了解它需要哪些参数 同样值得注意的是,从Python 2.6开始,内置函数open()现在是io.open()函数的别名。甚至考虑删除Python3中的内置open(),并要求使用io.open,以避免由于诸如“from blah import*”之类的事情而导致意外的命名空间冲突。在Python 2.6 +中,你可以写(也可以认为这种风格是很好的实践):
从您也可以保持您的进口和使用
file=os.open(“foo.txt”,模式)
模式可以是:
os.O_RDONLY: open for reading only
os.O_WRONLY: open for writing only
os.O_RDWR : open for reading and writing
os.O_NONBLOCK: do not block on open
os.O_APPEND: append on each write
os.O_CREAT: create file if it does not exist
os.O_TRUNC: truncate size to 0
os.O_EXCL: error if create and file exists
os.O_SHLOCK: atomically obtain a shared lock
os.O_EXLOCK: atomically obtain an exclusive lock
os.O_DIRECT: eliminate or reduce cache effects
os.O_FSYNC : synchronous writes
os.O_NOFOLLOW: do not follow symlinks
提供这些参数解决了我的问题:
with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)
您的脚本中有一个bug。VAL是一个字典,它没有append方法。你只需要用vals[t[0]]=t[1]赋值,它应该是“f中的行:”与val_fyeah sev相反,我已经完成并在中途更改了变量。。。谢谢你指出这一点。因此,我在我的问题中添加了另一个问题,我得到了一个“文件未找到错误”。我工作的机器设置为隐藏扩展名,因此该文件被称为in.txt.txt而不是in.txt。是的,我的评论不清楚,我最初得到的错误是,in.txt中的文件不存在,但在我的脑海中“那是不可能的!于是我开始在我的代码中加入一些东西,其中之一就是“从操作系统导入”*“这带来了一个不同的错误,我认为我已经解决了一个问题,找到了另一个。回答完这个问题后,我的代码恢复到原来的错误。因此,我编辑了我的问题来解决这个问题,当发现我的机器没有显示扩展名,并且in.txt确实不存在时,我重新编辑了我的问题,并留下了我以前的评论,以备阅读。
with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)