1

我正在尝试编写一个 txt 文件,但我得到一个TypeError. 我该怎么做?下面是我的代码:

yesterdays_added = f1_set - f2_set
yesterdays_removed = f2_set -f1_set
with open('me{}{}{}.txt'.format(dt.year, '%02d' % dt.month, '%02d' % dt.day), 'w') as out:
    for line in todays:
        if line in yesterdays_added:
            out.write( 'Removed', line.strip())
        elif line in yesterdays_removed:
            out.write ('Added', line.strip())


    for line in yesterdays:
       if line in yesterdays_added:
            out.write ('Removed', line.strip())
        elif line in yesterdays_removed:
            out.write ('Added', line.strip())

这是我得到的错误:

 out.write ('Added', line.strip())
TypeError: function takes exactly 1 argument (2 given)
4

3 回答 3

4

您需要将它们连接在一起。

out.write("Added "+line.strip()) # Or out.write("Added {}".format(line.strip()))

例如,

>>> "Added "+"abc\n".strip()
'Added abc'

来自Python 文档

f.write(string) 将 string 的内容写入文件,返回 None。

如有疑问,请使用help().

write(...)
    write(str) -> None.  Write string str to file.

这表示write()只接受一个参数。(而您提供 2,因此错误)

于 2013-07-23T19:57:33.337 回答
1

正如错误消息所示,write只接受一个参数。如果您想写两件事,请对 进行两次调用write,或将它们与+.

于 2013-07-23T19:58:09.027 回答
0

您收到此错误是因为该write方法采用一个类型的参数string

writelines然而,该方法接受一个类型为 的参数iterable

在这种情况下,该writelines方法是首选方法,除非您想格式化输出字符串。

writelines例子:

lines_to_write = ('Removed', line.strip(),)
open.writelines(lines_to_write)

write例子:

line_to_write = '{0}...fancy formatting...{1}'.format('Removed', line.strip(),)
open.write(line_to_write)

文档: http:
//docs.python.org/2/library/stdtypes.html#file.write http://docs.python.org/2/library/stdtypes.html#file.writelines

于 2013-07-23T20:17:16.883 回答