Python IOError:文件未打开以进行写入,并且未定义全局名称"w"

cra*_*ice 9 python io syntax-error

我正在尝试编写一个小程序,用Python编写一个文件行(追加会更好),如下所示:

def getNewNum(nlist):
    newNum = ''
    for i in nlist:
        newNum += i+' ' 
    return newNum

def writeDoc(st):
    openfile = open("numbers.txt", w)
    openfile.write(st)

newLine =  ["44", "299", "300"]

writeDoc(getNewNum(newLine))
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到错误:

openfile = open("numbers.txt", w)
NameError: global name 'w' is not defined
Run Code Online (Sandbox Code Playgroud)

如果我放下"w"参数,我会收到另一个错误:

line 9, in writeDoc
    openfile.write(st)
IOError: File not open for writing
Run Code Online (Sandbox Code Playgroud)

我正在追随(我希望)这里有什么.

当我尝试追加新行时也会出现同样的情况.我该如何解决这个问题?

Lev*_*von 26

问题出在open()调用中writeDoc(),文件模式规范不正确.

openfile = open("numbers.txt", w)
                               ^
Run Code Online (Sandbox Code Playgroud)

w需要具有(一对单或双)周围的引号,即

openfile = open("numbers.txt", "w")
                                ^
Run Code Online (Sandbox Code Playgroud)

引用文档重新文件模式:

第一个参数是包含文件名的字符串.第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符.

回复:"如果我放下"w"参数,我得到另一个错误:..IOError:文件没有打开写"

这是因为如果没有指定文件模式,则默认值为'r'ead,这解释了有关文件未打开"写入"的消息,它已被打开以进行"读取".

有关读取/写入文件和有效模式规范的更多信息,请参阅此Python文档.