2015-04-07 10 views
2

任何人都可以請大家看一下我到目前爲止已經做了一個功能?我還沒有成功地找到問題。Python的計數線和字符在文件

def txt_file(file1): 
    file1 = open('text.txt', 'r') 
    linecount = 0 
    charcount = 0 
    for line in file1: 
     linecount +=1 
     for char in line: 
      charcount += 1 
    print "file1 contains", linecount, "lines and", charcount, "characters." 
    file1.close() 
+0

你傳遞的參數是無用的,因爲你馬上重寫你的函數的第一行的值。您可以從參數列表中刪除它。也可以將'charcount + = 1'中的char代碼縮短爲'charcount + = len(line)'。您可能想要在for循環之外進行打印,所以我建議您不要在一個級別上打印該打印語句。 – Shashank

+0

那麼你的問題是什麼? – Kasramvd

+0

問題是什麼?您是否只是獲取文件中每行的更新結果的打印行?如果這是問題,請將'print'語句移出'for'循環。 – TigerhawkT3

回答

4

這是很容易這樣說:

with open('text.txt') as the_file: 
    data = [len(i) for i in the_file] 
    line, char = len(data), sum(data) 
0

當您使用的for循環:

for line in file1: 
    line += 1 

在for循環的變量line正是在於遍歷變量被調用,並沒有任何與你」重新尋找。相反,做一些研究之後,嘗試一下本作行:

linecount = open(file1).read().count('\n') 

而對於字符,請使用for循環,排除空格:

for i in file1: 
    if i != " ": 
     charcount += 1 
+0

當解釋器嘗試向'int'添加'str'時,將會出現回溯失敗。將每個'int'投射到'str',或者保持原樣(這非常好)。 – TigerhawkT3

0

的問題是,打印語句縮進一次太多。它每循環執行一次,需要移動到最後。

更好的方式來做到這一點是使用len

file1=open("foo.txt", "r").readlines() 

linecount=len(x) 
charcount=sum(map(len, x)) 

print "file1 contains {0} lines and {1} characters".format(linecount, charcount) 

的charcount工作,因爲它需要每一行的LEN並將其加。

1

有在你的代碼的幾個誤區:

  • 壓痕
  • 打印必須是環線以外
  • 聲明函數你實際上不使用
說法

試試這個代碼:

file1 = open('textfile.txt', 'r') 
linecount = 0 
charcount = 0 
for line in file1: 
    linecount +=1 
    for char in line: 
     charcount += 1 
print ("file1 contains", linecount, "lines and", charcount, "characters.") 
file1.close() 

如果你需要一個函數定義和調用它以這樣的方式

def txt_file(): 
    file1 = open('textfile.txt', 'r') 
    linecount = 0 
    charcount = 0 
    for line in file1: 
     linecount +=1 
     for char in line: 
      charcount += 1 
    print ("file1 contains", linecount, "lines and", charcount, "characters.") 
    file1.close() 
if __name__ == "__main__": 
    txt_file() 

在一個示例文件包含以下三行:

First Line 
Second Line 
Third Line 

它產生以下輸出:

file1 contains 3 lines and 33 characters. 

(這也算空間和換行符)

+3

問題可能出現在Python 2中,其中'print'是一個語句而不是函數,因此不需要括號。 – TigerhawkT3

+0

是的。我編輯了答案,刪除了關於打印語法的觀點。 –