输出CSV文件中的伪造数据

时间:2019-01-22 21:22:15

标签: python csv

我正在尝试更改CSV上的定界符并写入新文件,这只是一个简单的修改,不是吗。

#!/usr/bin/python
#-*- econde: utf-8 -*-

import sys
import csv

def main():


    r = open(sys.argv[1],"r")
    wr = open(sys.argv[2],"a+")

    rea = csv.reader(r, delimiter=',')
    writer = csv.writer(wr,delimiter="|", quotechar="'")
    for row in rea:
        #line = str(row).replace(",","|")
        #writer.writerow("".join(line))
        writer.writerow(row)

    print type(row)
    print row
    r.close()
    wr.close()

if __name__ == '__main__':
    main()

更新

控制台中的输出如下:

./csv_read.py fim.csv salida.csv
<type 'list'>
['9/17/18 22:29', 'any', 'la_cuerda.net', 'Sep 17 22:29:29 running yum[37144]: Installed: ImageMagic-toolkit-2.1.7-1.noarch']

但是在文件中,它以三种不同的方式写了3次相同的字符串

第一种方法仍然相同:每个字段1个字符(包括错误的格式和方括号)

第二种方法是将所有内容插入一个单元格中,而不像原始单元格一样拆分

这是输入文件和输出文件的内容

$ cat Input.csv
Time(GMT),Host,dest,Alert
9/17/18 22:34,any,google.com.mx,monitor: Agent started: 'discovery.channel.org->any'.
9/17/18 22:29,any,la_cuerda.net,Sep 17 22:29:29 running yum[37144]: Installed: ImageMagic-toolkit-2.1.7-1.noarch

$ cat Output.csv
[,'''',T,i,m,e,(,G,M,T,),'''',|, ,'''',H,o,s,t,'''',|, ,'''',d,e,s,t,'''',|, ,'-''',A,l,e,r,t,'''',]
[,'''',9,/,1,7,/,1,8, ,2,2,:,3,4,'''',|, ,'''',a,n,y,'''',|, ,'''',g,o,o,g,l,e,.,c,o,m,.,m,x,'''',|, ,",m,o,n,i,t,o,r,:, ,A,g,e,n,t, ,s,t,a,r,t,e,d,:, ,'''',d,i,s,c,o,v,e,r,y,.,c,h,a,n,n,e,l,.,o,r,g,-,>,a,n,y,'''',.,",]
[,'''',9,/,1,7,/,1,8, ,2,2,:,2,9,'''',|, ,'''',a,n,y,'''',|, ,'''',l,a,_,c,u,e,r,d,a,.,n,e,t,'''',|, ,'''',S,e,p, ,1,7, ,2,2,:,2,9,:,2,9, ,r,u,n,n,i,n,g, ,y,u,m,[,3,7,1,4,4,],:, ,I,n,s,t,a,l,l,e,d,:, ,I,m,a,g,e,M,a,g,i,c,-,t,o,o,l,k,i,t,-,2,.,1,.,7,-,1,.,n,o,a,r,c,h,'''',]
Time(GMT)|Host|dest|Alert
9/17/18 22:34|any|google.com.mx|'monitor: Agent started: ''discovery.channel.org->any''.'
9/17/18 22:29|any|la_cuerda.net|Sep 17 22:29:29 running yum[37144]: Installed: ImageMagic-toolkit-2.1.7-1.noarch
Time(GMT)|Host|dest|Alert
9/17/18 22:34|any|google.com.mx|'monitor: Agent started: ''discovery.channel.org->any''.'
9/17/18 22:29|any|la_cuerda.net|Sep 17 22:29:29 running yum[37144]: Installed: ImageMagic-toolkit-2.1.7-1.noarch
Time(GMT)|Host|dest|Alert
9/17/18 22:34|any|google.com.mx|'monitor: Agent started: ''discovery.channel.org->any''.'
9/17/18 22:29|any|la_cuerda.net|Sep 17 22:29:29 running yum[37144]: Installed: ImageMagic-toolkit-2.1.7-1.noarch

1 个答案:

答案 0 :(得分:0)

wr = open(sys.argv[2],"a+")是原因。每次运行程序时,它会将其输出追加到文件中。您看到的虚假数据来自以前的运行。

除非您的程序确实应该附加到输出文件而不是覆盖输出文件,否则以open模式wb覆盖文件。

还要注意,csv.readercsv.writer文档要求以二进制模式打开文件(因为该模块应该执行自己的代码转换)。