博学谷 > 资讯 > Python > Python技巧整理之文件读写

原创 Python技巧整理之文件读写

发布时间:2019-08-07 17:17:53 浏览 500 来源:博学谷资讯 作者:照照

    大家在使用Python的时候,如果知道一些小技巧,那么工作效率会有很大的提高。小编整理了关于文件读写的Python技巧,都是干货,希望能对大家有一点小小的帮助吧!

     

    Python技巧

     

    # python2 str unicode

     

    # python3 bytes str

     

    # python2

     

    s = u'你好'

     

    s.encode('utf8') #存储到文件中的格式

     

    f = open('hello.txt', 'w')

     

    f.write(s.encode('utf8'))

     

    f.close()

     

    f = open('hello.txt', 'r')

     

    t = f.read().decode('utf8') # 你好

     

    f.close()

     

    # python3 字符串就是unicode

     

    strb = b'asdfasdfsdg'

     

    s = '你好'

     

    f = open('hello2.txt', 'wt', encoding='utf8') # 自动完成编解码

     

    f.write(s)

     

    f.close()

     

    f = open('hello2.txt', 'rt', encoding='utf8')

     

    s = f.read()

     

    f.close()

     

    # 处理二进制文件 处理音频文件,将音量调小保存

     

    f = open('demo.wav', 'rb')

     

    info = f.read(44) #文件头

     

    import struct

     

    struct.unpack('h',info[22:24]) #处理文件头 数据运算

     

    struct.unpack('i',infi[24:28])

     

    f.seek(0,2)

     

    f.tell()

     

    n = (f.tell()-44) /2

     

    import array

     

    buf = array.array('h', (0 for _ in xrange(n)))

     

    f.seek(44)

     

    f.readinto(buf)

     

    for i in xrange(n): buf[i] /= 8

     

    f2 = open('demo2.wav', 'wb')

     

    f2.write(info)

     

    buf.tofile(f2)

     

    f2.close()

     

    # 使用临时文件

     

    # 自动删除,不占内存

     

    from tempfile import TemporaryFile, NamedTemporaryFile

     

    f = TemporaryFile() # 系统文件系统找不到

     

    f.write('abcddee'*100000)

     

    f.seek(0)

     

    f.read(100)

     

    ntf = NamedTemporaryFile(delete=False) # 能找到文件,默认关闭以后会删除文件

     

    fname = nft.name

     

    # 设置文件的缓冲

     

    # I/O 操作以块为单位,如4096字节一个块

     

    f = open('test.txt', 'w', buffering=2048) # 全缓冲,要写满缓冲才会写到文件中

     

    f = open('test.txt', 'w', buffering=1) # 行缓冲,\n就会写文件

     

    f = open('test.txt', 'w', buffering=1) # 无缓冲,实时写

     

    f.write('abc')

     

    # 将文件映射到内存

     

    import mmap

     

    f = open('demo.bn','r+b')

     

    f.fileno()

     

    m = mmap.mmap(f.fileno(), 0, access=mmpa.ACCESS_WRITE, offset=mmap.PAGESIZE)

     

    # 得到字节数组

     

    m[4:8] = '\xff'*4 # 修改直接改变文件内容

     

    # 读写csv数据

     

    from urllib import urlretrieve

     

    urlretrieve('http://table.finance.yahoo.com/table.csv?s=000001.sz', 'pingan.csv')

     

    rf = open('pingan.csv', 'rb')

     

    import csv

     

    reader = csv.reader(rf)

     

    header = reader.next()

     

    wf = open('pingan_c.csv', 'wb')

     

    writer = csv.writeer(wf)

     

    writer.writerow(header)

     

    rf.close()

     

    wf.close()

     

    # 读写json数据

     

    import requests

     

    import json

     

    from record import Record

     

    record = Record(channel=1)

     

    audioData = record.record(2)

     

    from secret import API_KEY, SECRET_KEY

     

    authUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" +

     

    SECRET_KEY

     

    response = requests.get(authUrl)

     

    res = json.loads(response.content)

     

    token = res['access_token']

     

    #百度语音识别

     

    cuid = 'xxxxxxxxxxxxx'

     

    srvUrl = 'http://vop.baidu.com/server_api?cuid=' + cuid + '&token=' + token

     

    heepHeader = {'Content-Type': 'audio/wav; rate = 8000'}

     

    response = requests.post(srvUrl, headers=httpHeader, data=audioData)

     

    res = json.loads(response.content)

     

    text = res['result'][0]

     

    print text

     

    # json.dumps() python对象(列表、字典等)转换成json字符串

     

    # json.dumps(data, sort_keys=True)

     

    # json.loads() json字符串转换成python对象

     

    with open('demo.json', 'wb') as f:

     

    json.dump(l, f) # 将l数据写到文件

     

    # 构建xml文档

     

    from xml.etree.ElementTree import parse

     

    with open('demo.xml') with f:

     

    et = parse(f)

     

    root = et.getroot()

     

    root.tag

     

    root.attrib

     

    root.text

     

    #root.getchildren()

     

    for child in root:

     

    print child.get('name')

     

    root.find('country')

     

    root.findall('country') # 直接子元素

     

    for e in root.iterfind('country'):

     

    print e.get('name')

     

    from xml.etree.ElementTree import Element, ElementTree, tostring

     

    e = Element('Data')

     

    e.set('name', 'abc')

     

    e2 = Element('Row')

     

    e3 = Element('Open')

     

    e3.text = '8.80'

     

    e2.append(e3)

     

    e.append(e2)

     

    tostring(e)

     

    et = ElementTree(e)

     

    et.write('demo.xml')

     

    # 读写excel文件

     

    import xlrd, xlwt

     

    book = xlrd.open_workbook('demo.xls')

     

    book.sheets()

     

    sheet = book.sheet_by_index(0)

     

    rows = sheet.nrows

     

    cols = sheet.ncols

     

    cell = sheet.cell(0,0) #(0,0)单元格

     

    cell.ctype

     

    cell.value

     

    row = sheet.row(1) #cell对象列表

     

    data = sheet.row_values(1, 1) #第1列跳过第一格的值列表

     

    sheet.put_cell(0, cols, xlrd.XL_CELL_TEXT, u'Total', None)

     

    wbook = xlwt.Workbook()

     

    wsheet = wbook.add_sheet('sheet1')

     

    style = xlwt.easyxf('align: vertical center, horizontal center')

     

    wsheet.write(rows,cols, sheet.cell_value(rows,cols), style)

     

    wsheet.save('output.xls')

     

    以上就是文件读写Python技巧的整理,觉得本篇文章有用的同学不妨分享出去,让更多人看见。

上一篇:Python和C语言哪个难?零基础学哪个好? 下一篇:自学机器学习应该避免的三大误区与陷阱

相关推荐 更多

最新文章

扫描二维码,回复"Python"获取100G资料包