Python将数据写入输出文件

时间:2017-05-08 03:11:09

标签: python file

def fileCounter():
    infile = open('words.txt','r') # Open the source file
    outfile = open('File_Results.txt','w')
    data = infile.read()

    lineCount = len(data.split('\n'))
    wordCount = len(data.split())
    charCount = len(data)
    results = print(lineCount,wordCount,charCount)


    infile.close()
    outfile.write()
    outfile.close()

fileCounter()

我是编码的新手,这是我第一次使用文件。我如何在外场写作结果。我一直收到这个错误 - TypeError:write()参数必须是str,而不是None

5 个答案:

答案 0 :(得分:1)

您需要编写某些内容outfile.write()的括号之间有一些东西。我的猜测是你想要这样的东西:

outfile.write("{} {} {}".format(lineCount, wordCount, charCount))

您的result = print(...)没有保存任何内容。它打印到你的控制台。

另一种方法是将print重定向到您的文件:

from contextlib import redirect_stdout

def fileCounter():
    with (open('words.txt','r') as infile, open('File_Results.txt','w') as outfile):
        data = infile.read()

        lineCount = len(data.split('\n'))
        wordCount = len(data.split())
        charCount = len(data)

        with redirect_stdout(outfile):
            print(lineCount,wordCount,charCount)

fileCounter()

请注意,我还使用上下文管理器自动处理打开和关闭文件。这种方法更安全,因为即使发生异常,它也会关闭文件(并停止重定向STDOUT)。

答案 1 :(得分:0)

write函数的参数必须是字符串。

如果这一行

results = print(lineCount,wordCount,charCount)

在输出文件中打印你想要的东西,你可能会做类似

的事情
results = "%s, %s, %s" % (lineCount,wordCount,charCount)
outfile.write(results)
outfile.close()

答案 2 :(得分:0)

outfile.write()中,您希望包含您要写入文件的内容。在这种情况下,您可以执行以下操作:

#put results into a list
results = [lineCount, wordCount, charCount]

#print results
print(results)

#write results to a file
outfile.write(",".join(results))

您的代码中有两件事是有趣的。首先,据我所知,print会返回None,因此您当前代码中的resultsNone。其次,在更正后的再现中,results是一个列表,但为了将其写入文件,您需要将其转换为字符串。我们通过连接列表中的元素来做到这一点,在本例中是逗号。

答案 3 :(得分:0)

您的outfile.write()功能没有任何争议。需要将一些内容写入文件,需要将其作为参数传递给函数。

例如:

 # To write 'I am new to Python'
 outfile.write('I am new to Python')

答案 4 :(得分:0)

outfile.write()中没有参数,所以它什么都没写。

我假设你要在infile中写下outfile的数据,所以你要执行以下操作:

outfile.write(lineCount)
outfile.write(wordCount)
outfile.write(charCount)