[英]Writing lines to new file from existing file
我有一個接近5000行(il3)的文件。 我想將文件末尾的前7行然后一定數量的行寫入新文件(il3NEW)。 我能夠編寫前7行,但是當我嘗試編寫后面的行時,我找不到任何有用的東西。
並非所有我將使用的文件都是相同的,所以我不只是想查看文件並選擇行號並寫入,我需要將原始文件'il3'中的行寫入新文件'il3NEW',開始在提到某個單詞的特定行,然后一直到文件末尾。
我已成功打開'il3'以及一個空白的新文件(il3NEW)。 我使用for循環來編寫前7行。 當我嘗試根據'il3'中某個單詞的位置進行書寫時,我不知道如何識別該行號,然后使用該行號將行從那里寫到文件的末尾到'il3NEW ”。
這就是我的工作:
il3= open("il3dta",'r')
il3NEW= open("il3dtaNEW",'w')
for i in range(7):
m=il3.readline()
il3NEW.write(m)
il3.close()
il3NEW.close()
我還有以下添加立即行:
for i in range(5000):
m=il3.readline()
if m == ' -1 TREE POINTS(=1),OTHERWISE NO TREE\n':
il3NEW.write(m)
但是,我也想要所有以下行。 如何讓它循環遍歷所有行並寫入它們?
我還注意到,每當我在for循環之前和open語句之間寫任何東西時,for循環都不再有效。 例如,如果我嘗試定義一些變量:
#lines=il3.readlines()
#searchquery = ' -1 TREE POINTS(=1),OTHERWISE NO TREE\n'
for循環不再有效,我的新文件為空。
如果后面的第二個循環用於循環遍歷整個文件而不必編寫5000,那也很好。我試過:
for i in range(len(il3.readlines( ))):
m=il3.readline()
if m == ' -1 TREE POINTS(=1),OTHERWISE NO TREE\n':
il3NEW.write(m)
但這不起作用。 如果我嘗試按上面的方式定義行數,則會生成一個空白文件。 任何幫助解決這個問題將非常感謝! 我是Python的新手,所以我為基本問題道歉,但我找不到有同樣問題的問題。 謝謝!!
如果我理解正確你可以修改你的方法有一個標志HaveFoundTheLineImLookingFor
如果你找到你的特殊線,這是真的。 然后,如果這是真的,我們用添加or
if
語句寫每一行:
HaveFoundTheLineImLookingFor = False
for i in range(5000):
m=il3.readline()
if (m == ' -1 TREE POINTS(=1),OTHERWISE NO TREE\n' or HaveFoundTheLineImLookingFor ):
il3NEW.write(m)
HaveFoundTheLineImLookingFor = True
更好的方法是不限制自己使用5000行的文件:
HaveFoundTheLineImLookingFor = False
with open('il3dta') as MyFile:
for i, line in enumerate(MyFile):
if(i < 7):
il3NEW.write(line)
if(HaveFoundTheLineImLookingFor ):
il3NEW.write(line)
if(line == ' -1 TREE POINTS(=1),OTHERWISE NO TREE\n' and !HaveFoundTheLineImLookingFor ):
il3NEW.write(line)
HaveFoundTheLineImLookingFor = True
請養成使用上下文管理器和文件的習慣。
with open('il3dra') as il3, open('il3dtaNEW', 'w') as il3_new:
found = False
for line_idx , line in enumerate(il3):
if line.strip() == ' -1 TREE POINTS(=1),OTHERWISE NO TREE':
found = True
if found or line_idx < 7:
il3_new.write(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.