美文网首页Python程序员
Python读写文件(csv、txt、excel)

Python读写文件(csv、txt、excel)

作者: 逆向与爬虫的故事 | 来源:发表于2018-12-18 17:12 被阅读320次

    大家做在数据处理的时候,肯定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢?

    1.python读写csv文件

    import csv
     
    #python2可以用file替代open
    with  open('test.csv','w') as csvFile:
        writer = csv.writer(csvFile)
        #先写columns_name
        writer.writerow(["index","a_name","b_name"])
        #写入多行用writerows
        writer.writerows([[1,2,3],[0,1,2],[4,5,6]])
     
    #用reder读取csv文件
    with open('test.csv','r') as csvFile:
        reader = csv.reader(csvFile)
        for line in reader:
                  print line
    

    一定要注意,csv文件在写入时,字段和字段之间是用逗号“”,“”分割的,如果稍微不注意,就会出现串行的情况。

    2.python读写excel文件

    import xlwt
    #创建工作簿
    f = xlwt.Workbook()
     '''
        创建第一个sheet:
        sheet1
     '''
     #创建sheet
     sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True)
     row0 = [u'编号',u'单位',u'网站备案号',u'域名',u'外链名称',u'不良网站名',u'不良url地址',u'地市',u'ip地址',u'截图',u'备注',u'审核时间',u'父链接',u'源码超链接']
     #生成第一行
     for i in range(0,len(row0)):
           sheet1.write(0,i,row0[i])  # 顺序为x行x列写入第x个元素
     f.save('newfile.xls')
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # 读取excel数据
    import xlrd
    data = xlrd.open_workbook('test.xls') # 打开xls文件
    table = data.sheets()[0] # 打开第一张表
    nrows = table.nrows      # 获取表的行数
    for i in range(nrows):   # 循环逐行打印
        if i == 0: # 跳过第一行
            continue
        print table.row_values(i)
    

    3.python读写txt文件

    #第一种
    with open("test.txt","r","utf-8") as f:   
      # 为a+模式时,因为为追加模式,指针已经移到文尾,读出来的是一个空字符串。
        ftext = f.read()  # 一次性读全部成一个字符串
        ftextlist = f.readlines() # 也是一次性读全部,但每一行作为一个子句存入一个列表
    #第二种
    f = open('test.txt', 'r', 'utf-8') 
    ftext = f.read() # 一次性读取完成
    ftextlist = f.readlines() # 同上
    fline = f.readline() # 只读取1行
    f.close() # 关闭文件
    
    # 写入txt
    f = open('test.txt', 'ab', 'utf-8')  # 在文件存在内容的时候追加
    f = open('test.txt', 'wb', 'utf-8')  # 文件存在时直接覆盖,没有就创建文件写入
    f.write('aa') # 文件写入内容
    f.close()
    # 第二种
    with open('test.txt', 'a') as f: # 道理同上
            f.write('aa')
    with open('test.txt', 'w') as f: # 道理同上
            f.write('aa')
    
    image.png

    接下来说说with open 和 open的区别:

    区别:

    用open去打开一个文件进行读取,假设文件不存在的话,比如打开文件 aaaa


    image.png

    如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在!
    如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示

    >>> f.read()
    'Hello, world!'
    

    最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

    f.close()
    

    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

    try:
        f = open('/path/to/file', 'r')
        print(f.read())
    finally:
        if f:
            f.close()
    

    但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

    with open('/path/to/file', 'r') as f:
        print(f.read())
    

    这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

    总结:以后读写文件都使用with open语句,不要再像以前那样用f = open()这种语句了!

    作者:可爱的小虫虫

    相关文章

      网友评论

        本文标题:Python读写文件(csv、txt、excel)

        本文链接:https://www.haomeiwen.com/subject/dzekkqtx.html