2013-08-27 63 views
0

我想删除(删除)csv文件中的特定行。但是有一些条件。删除csv文件中的特定行,python

1.) File can't be buffered in memmory, becuse of it's size (1GB+) 
2.) File MUST NOT be "touched" (rewriting file) 

我的工作就是删除CSV文件中的某些行,无需更改任何其他行 - 非常重要,becuse编码和发送过滤csv文件到公司,打印的文件。

有解决方案吗?

谢谢!

+0

为什么不使用数据库? – dare

+0

你可以制作一个新文件,然后不要触摸旧文件吗? – philshem

+0

我可以创建一个新文件,但我必须从旧文件中删除一些行,然后过滤文件然后发送。问题是,因为我不应该重写行将保留原因编码 – djpiky

回答

2

它不能完成。您想要从文件中删除内容,而不用修改它。那些是相互排斥的。

+0

告诉OP的老板;) – philshem

+0

他的号码是什么,我很乐意给他打电话;) – McKay

0

您可以尝试使用mmap接口以空格字符替换行字节。

0

您可以使用'touch -t'创建旧时间戳。有关更多详细信息,请参阅'touch'的手册页。

touch -t 200510071138 old.dat 

只要确保您记下原始时间戳!

为了删除行,您可以使用'grep -v',它会打印除搜索条件以外的所有内容。

grep -v baddata old.dat > new.dat 

要用python进行修改,我们需要一些特定的文件细节。