亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 47312 | 回復(fù): 23
打印 上一主題 下一主題

求助:如何刪除文本文件中的一行 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-05-25 21:27 |只看該作者 |倒序瀏覽
注明:不可能用全部讀進文件的方式來做,因為所要操作的文本文件太大了。

論壇徽章:
0
2 [報告]
發(fā)表于 2010-05-25 22:24 |只看該作者
fileHandle=open("filename",'r')#打開文件
fileList=fileHandle.readlines()#每行都讀出,放到列表中
隨便怎么操作,append,remove.....
完事后把列表寫回文件

至于你說的不讀取整個文件....額,有這個功能嗎?沒聽說啊

論壇徽章:
0
3 [報告]
發(fā)表于 2010-05-25 23:27 |只看該作者
用迭代的方法應(yīng)該是不需要全讀進內(nèi)存的吧……
  1. a = open('1.txt')
  2. for line in a:
  3.     print line
復(fù)制代碼
不行的話,如果知道位置,可以seek到那里刪除……

論壇徽章:
0
4 [報告]
發(fā)表于 2010-05-26 00:29 |只看該作者
回復(fù) 3# jjj137
seek到那里你打算怎么刪除?

論壇徽章:
0
5 [報告]
發(fā)表于 2010-05-26 01:32 |只看該作者
回復(fù) 4# luffy.deng


    嗯,確實啊,沒考慮到這點……看來 seek 的方法是不行的了……
    上面說的迭代的辦法,如果我沒記錯的話,應(yīng)該還是可以用的。

論壇徽章:
0
6 [報告]
發(fā)表于 2010-05-26 09:39 |只看該作者
可以一行一行的讀,然后往結(jié)果文件里面寫,不要寫要刪除的那些行。。。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-05-26 10:19 |只看該作者
這個方法應(yīng)該可以:
為了省事,代碼沒加異?刂疲粚憘大概流程

情況1)
知道要刪除行的行號:
  1. import os

  2. DELNUM=2     
  3. i=1         
  4. openFileHandle=open('filename','r')
  5. writeFileHandle=open('Temp','w')
  6. while 1:
  7.     line=openFileHandle.readline()
  8.     if line:
  9.         if i==DELNUM:
  10.             i=i+1
  11.             print "找到%d行:%s"%(DELNUM,line)
  12.             continue
  13.         else:
  14.             i=i+1
  15.             writeLine='%s\n'%line
  16.             writeFileHandle.write(writeLine)
  17.     else:
  18.         print "匹配%d行失敗,文件已到末尾"%DELNUM
  19.         break
  20. openFileHandle.close()
  21. writeFileHandle.close()
  22. os.remove('filename')
  23. os.rename('Temp','filename')
  24. print "All Done!"
復(fù)制代碼
代碼介紹,從DELNUM行開始:
#要刪除行的行號,假設(shè)為2
#設(shè)個計數(shù)器,計錄當前到了第幾行
#打開要操作的文件
#新建一個中間文件,用于寫入除第2行的所有行
#進入主循環(huán)
#如果文件沒到末尾,并且當前記錄的行號不是要刪除的行號,將該行寫入Temp
#如果是要刪除的行,打印行號及該行內(nèi)容,不寫入Temp,進入下一循環(huán)
#如果讀到文件末尾,跳出主循環(huán)
#關(guān)閉文件句柄
#用Temp文件替換filename,得到刪除了DELNUM行的文件

情況2)
知道要刪除行的某一特征:
將1中的行號判斷改成正則表達式,匹配成功,不寫入Temp
不成功,寫入Temp,其他一樣

論壇徽章:
0
8 [報告]
發(fā)表于 2010-05-26 10:21 |只看該作者
額,我調(diào)試程序了,沒注意6樓給出思路了

論壇徽章:
0
9 [報告]
發(fā)表于 2010-05-26 10:22 |只看該作者
嗯,感覺還是沒什么好辦法,因為該文件很大,而且一直在動態(tài)增加,全部讀出來肯定不現(xiàn)實,因為要每小時執(zhí)行一次,把不合法的數(shù)據(jù)行從文件中清除出去;
而且不能用存另外一文件的方式,因為該文件是不能動的。

論壇徽章:
0
10 [報告]
發(fā)表于 2010-05-26 10:29 |只看該作者
可以一行一行的讀,然后往結(jié)果文件里面寫,不要寫要刪除的那些行。。。
t6760915 發(fā)表于 2010-05-26 09:39



    補充下,如果你一行一行的寫文件比較慢可以增加一個列表,把需要寫的行append到這個列表中,當這個列表長度大于比如說5000行時,開始往結(jié)果文件中寫,寫完清除下這個列表。如此循環(huán)往復(fù),最后等源文件到達最后一行時,再寫下結(jié)果文件就可以了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP