Python 是否需要整数?开()

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('\'')

我有一个非常简单的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('\'')
    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)