将参数写入文本文件

时间:2017-01-31 09:47:31

标签: python

我有一个简单的方法,我必须做以下事情:

  • 打开.txt文件
  • 在新行上为文件添加文字

因此我做了以下内容:

import pandas as pd
import os
path = '/test'
os.chdir(path)

def writeScores(test):
 with open('output.txt', 'w') as f:
    var = "\n", test, "\n"
    f.write(var)

然而,这给了我以下错误。我出错了什么想法?

 TypeError: expected a character buffer object

4 个答案:

答案 0 :(得分:2)

您正在尝试将tuple写入您的文件。

虽然它适用于print,因为print知道如何打印多个参数,write更严格。

只需正确格式化var

var = "\n{}\n".format(test)

答案 1 :(得分:2)

你有这个错误,因为你的第一个参数不是字符串,你应该传递一个字符串,你可以使用这个简单的脚本,你也可以改变" rw"到" w +" 或使用' a +'附加(不删除现有内容)

import os

writepath = 'some/path/to/file.txt'

mode = 'a' if os.path.exists(writepath) else 'w'
with open(writepath, mode) as f:
    f.write('Freeman Was Here!\n')

答案 2 :(得分:0)

我假设您想要连接字符串,因此请使用+代替,

import pandas as pd
import os
#path = '/test'
#os.chdir(path)

def writeScores(test):
 with open('output.txt', 'w') as f:
    var = "\n" + test + "\n"
    f.write(var)

writeScores("asd")

答案 3 :(得分:0)

您在这里使用逗号分隔值(如

)创建了一个元组,而不是字符串
var = "\n" + test + "\n"

所以你不能直接在文件上写那个元组。所以让我们把那个元组中的值放到一个字符串中:

with open('output.txt', 'w') as fp:
    var = "\n", test, "\n"
    fp.write(''.join('%s' % x for x in var))

并且更好的方式由@ Jean-FrançoisFabre回答