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
答案 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
,因此您当前代码中的results
为None
。其次,在更正后的再现中,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)