簡體   English   中英

如何輸出文件python中的每一行

[英]how to output every line in a file python

     if data.find('!masters') != -1:
         f = open('masters.txt')
         lines = f.readline()
         for line in lines:
               print lines
               sck.send('PRIVMSG ' + chan + " " + str(lines) + '\r\n')
               f.close()

masters.txt有一個昵稱列表,如何一次打印文件中的每一行? 我只打印了第一個昵稱的代碼。 你的幫助將是欣賞它。 謝謝。

首先,正如@ l33tnerd所說, f.close應該在for循環之外。

其次,在循環之前,您只調用一次readline 那只讀第一行。 訣竅在於,在Python中,文件充當迭代器,因此您可以迭代文件而無需調用任何方法,這將為每次迭代提供一行:

 if data.find('!masters') != -1:
     f = open('masters.txt')
     for line in f:
           print line,
           sck.send('PRIVMSG ' + chan + " " + line)
     f.close()

最后,你指的是循環中的變量lines ; 我假設你的意思是指line

編輯:哦,你需要縮進if語句的內容。

你可能想要這樣的東西:

if data.find('!masters') != -1:
     f = open('masters.txt')
     lines = f.read().splitlines()
     f.close()
     for line in lines:
         print line
         sck.send('PRIVMSG ' + chan + " " + str(line) + '\r\n')

不要在每次循環和打印行而不是行時關閉它。 還可以使用readlines來獲取所有行。

EDIT刪除了我的另一個答案 - 本次討論中的另一個是比我的更好的替代方案,所以沒有理由復制它。

還用read()剝離了\\ n。splitlines()

你可以試試這個。 它不會立即將所有內容讀入內存(使用文件對象的迭代器),並在代碼離開with塊時關閉文件。

if data.find('!masters') != -1:
    with open('masters.txt', 'r') as f:
        for line in f:
            print line
            sck.send('PRIVMSG ' + chan + " " + line + '\r\n')

如果您使用的是舊版本的python(2.6之前的版本),則必須擁有

from __future__ import with_statement

循環遍歷文件。

f = open("masters.txt")
lines = f.readlines()
for line in lines:
    print line

你試過了嗎

for line in open("masters", "r").readlines(): print line

readline() 

另一方面,只讀“一條線”

readlines()

讀取整行並給出所有行的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM