2017-05-08 81 views
0
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,而不是无Python写数据输出文件

+0

没有任何这些反应的回答你的问题?如果是这样,您应该使用旁边的复选框标记最佳答案。 –

回答

1

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

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

你的result = print(...)不保存任何东西。它打印到您的控制台。

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

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)。

0

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

如果这条线

results = print(lineCount,wordCount,charCount) 

打印要在输出文件的东西,你可能会做这样的事情

results = "%s, %s, %s" % (lineCount,wordCount,charCount) 
outfile.write(results) 
outfile.close() 
+0

非常感谢您的工作 – landucci

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所以results在您当前的代码是None。其次,在更正的演绎中,results是一个列表,但为了将其写入文件,需要将其转换为字符串。我们通过加入列表中的元素来实现这一点,在这种情况下用逗号。

0

您的outfile.write()函数没有参数。需要将一些内容写入文件,这需要作为参数传递给函数。

例如:

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

有在outfile.write()没有参数所以没有写。

我假设你想在outfile写的infile数据,让您做到以下几点:

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

可能对包含分隔符很有帮助,因为此代码不会在输出之间放置空格或换行符。 –