Vic*_*tor 38 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('\'')
vals.append(t[0], t[1])
print vals
f.close()
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我得到:
回溯(最近一次调用最后一次):
文件"chval.py",第9行,在?f = open(sys.argv [1],'r')TypeError:需要一个整数
我正在使用python 2.4 ...因为我一直被要求不使用任何更新的东西,是否有一些我不知道的open()?为什么要整数?
该行之后的任何内容都是未经测试的.简而言之:为什么它会给我错误,我该如何解决?
Joh*_*hin 12
不要没有import * from wherever充分的理由(并没有很多).
您的代码正在使用os.open()函数而不是内置的open()函数.如果你真的想使用os.open(),import os那么请调用os.open(....).无论打开哪个打开,请阅读有关所需参数的文档.
小智 11
另外值得注意的是,从Python 2.6开始,内置函数open()现在是io.open()函数的别名.甚至考虑删除Python 3中的内置open()并要求使用io.open,以避免因"from blah import*"之类的事情导致意外的命名空间冲突.在Python 2.6+中你可以编写(也可以认为这种风格是很好的做法):
import io
filehandle = io.open(sys.argv[1], 'r')
Run Code Online (Sandbox Code Playgroud)
提供这些参数解决了我的问题:
with open('tomorrow.txt', mode='w', encoding='UTF-8', errors='strict', buffering=1) as file:
file.write(result)
Run Code Online (Sandbox Code Playgroud)