2015-10-29 25 views
0
inputFile = open('original_text.txt','r') 
outputFile = open('half_text.txt','w') 

line = inputFile.readline() 
count = 0 
for line in inputFile: 
    outputFile.write(line) 
    count += 1 
    if count % 2 == 0: 
     print(line) 

inputFile.close() 
outputFile.close() 

它使跳過1號線。例如,文本文件現在有10行。所以它打印了第3名第5名,第7名和第9名。所以我只是錯過了第一個。如何讓Python在文本文件中寫入其他所有行?

+0

你想要進入'half_text.txt'的哪幾行以及你想要打印到標準輸出的哪些行? – 5gon12eder

+1

也可以考慮枚舉(for(i,line)(open('original_text.txt')):'。 – 5gon12eder

回答

2

,因爲你讀它,並在循環之前把它扔掉這跳過第一道防線。刪除線4條,

line = inputFile.readline() 

添加修改計數奇偶奇與

if count % 2 == 1: 

對於一個稍微好一點的設計,使用切換一個布爾值:

count = False 
for line in inputFile: 
    outputFile.write(line) 
    count = not count 
    if count: 
     print(line) 

inputFile.close() 
outputFile.close() 

我試圖運行程序本身:

inputFile = open('this_file.py', 'r') 

count = False 

    outputFile.write(line) 

    if count: 



outputFile.close() 
+0

謝謝!原諒我的無知,但我剛剛開始瞭解文本文件。因此,要讀取的文件,我不必把行= inputFile.readline()? for循環是否完成了這個任務?並btw刪除行= inputFile.readline()確實工作。我只是想更好地理解它。 – Trey

+0

不是。一旦你打開文件,有幾種方法可以訪問它。 readline只是一個。最常見的兩種方式是Hooting向你展示的「開放式」,以及我做到這一點的方式。它們都將文件顯示爲一個生成器 - 它充當輸入行的元組。 – Prune

2

使用next跳過下一行。如果您有奇數行,您可能需要在呼叫下一個(fh)時注意出現StopIteration錯誤。

outputFile = open('half_text.txt','w') 

with open('original_text.txt') as fh: 
    for line1 in fh: 
     outputFile.write(line1) 
     try: 
      next(fh) 
     except StopIteration: 
      pass 

outputFile.close() 
+0

恕我直言,這是解決任務最pythonic的方式。注意一點:你可以避免將'next()'結果賦值給'line2',因爲它沒有被使用。 – davidedb

+0

@davidedb這是一個好點 – Hooting

0

for循環會在文件一行一行地當您使用readline,它會向前推進循環內的指針。因此odd將超過奇數行,並且even會遍歷偶數行。

with open (path, 'r') as fi: 
    for odd in fi: 
     even = fi.readline() 
     print ('this line is odd! :' + odd) 
     print ('this line is even! :' + even) 
+0

謝謝你的代碼片段,這可能會提供一些即時的幫助。通過說明爲什麼這是一個很好的解決問題的辦法,一個適當的解釋會[大大提高](https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)其教育價值,並會使其對未來具有相似但不相同問題的讀者更有用。請編輯您的答案以添加解釋,並指出適用的限制和假設。 – basvk

+0

你說得對。編輯。 – Sha2b

相關問題