2017-05-08 87 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

可能對包含分隔符很有幫助,因爲此代碼不會在輸出之間放置空格或換行符。 –