python知识点(九) 文件处理

文件处理

一、txt文件

def txt_writer():
    with open('data.txt','w',encoding='utf8') as f:
        f.write('你好\n')
        lines = [
            'name: Tom\n',
            'age: 22\n'
            'tel: 1234567\n'
        ]
        f.writelines(lines)

def txt_reader():
    with open('data.txt','r',encoding='utf8') as f:
        for line in f:
            print(line, end='')
if __name__ == '__main__':
    txt_writer()
    txt_reader()

二、csv文件

import csv
from collections import namedtuple


def csv_read():
    """ csv基本读取 """
    with open('data.csv','r',encoding='utf8') as f:
        reader = csv.reader(f)
        headers = next(reader)
        print(headers)
        for row in reader:
            print(row)

def csv_read_by_namedtuple():
    """ 读取csv并用namedtuple映射列名 """
    with open('data.csv','r',encoding='utf8') as f:
        reader = csv.reader(f)
        headers = next(reader)
        Row = namedtuple('Row', headers)
        for r in reader:
            row = Row(*r)
            print(row)

def csv_read_by_dict():
    """ 读取csv并用namedtuple映射列名 """
    with open('data.csv','r',encoding='utf8') as f:
        reader = csv.DictReader(f)
        headers = next(reader)
        for row in reader:
            print(row)

def csv_write():
    """ 写入csv文件 """
    with open('data.csv','w',encoding='utf8',newline='') as f:
        headers = ['name','age','tel']
        rows = [
            ('Tom','12','111111'),
            ('James','22','222222',),
            ('Mike','13','33333')
        ]
        writer = csv.writer(f)
        writer.writerow(headers)
        writer.writerows(rows)

if __name__ == '__main__':
    csv_write()
    # csv_read()
    # csv_read_by_namedtuple()
    csv_read_by_dict()

三、json文件

import json

data = {
    '姓名': 'Tom',
    '年龄': 22,
    '电话': '11111'
}
def json_basic():

    print(f'原始数据:{data}')
    print('-'*10)
    json_str = json.dumps(data) # s表示写到字符串中
    print(json_str)
    print('-' * 10)
    json_data = json.loads(json_str)
    print(json_data)

def json_writer_file():
    with open('data.json','w',encoding='utf8') as f:
        json.dump(data,f)

def json_read_file():
    with open('data.json','r',encoding='utf8') as f:
        res = json.load(f)
        print(res)
def json_type_diff():
    """
    类型差异
    """
    print(json.dumps(False)) # false
    print(json.dumps(True))  # true
    print(json.dumps(None))  # null

if __name__ == '__main__':
    # json_writer_file()
    # json_read_file()
    json_type_diff()

四、xls文件

import xlrd

def xl_read():
    """
    excel 读取
    """
    book = xlrd.open_workbook('data.xls')
    for sheet in book.sheets():
        print(sheet.name)

def xl_read_data():
    """
    excel 数据读取
    """
    book = xlrd.open_workbook('data.xls')
    sheet = book.sheet_by_name('name')
    print(f'工作簿:{sheet.name}')
    print(f'数据行数:{sheet.nrows}')
    for i in (sheet.nrows):
        print(sheet.row_values(i))
if __name__ == '__main__':
    xl_read()

五、SQLite
1、连接对象:sqlite3.connect(‘数据文件.db’)
commit close
2、游标:cusror

  1. .excute(‘sql语句’,[参数])
  2. .fetchall() 返回所有到列表
  3. .fetchone()
  4. .fetchmany(size)
    3、参数化查询
  5. ? 参数传递tuple
import sqlite3
conn = sqlite3.connect('db\\addressbook.db')
c = conn.cursor()
sql = 'select * from LinkMan'
res = c.execute(sql)
res
<sqlite3.Cursor object at 0x000001C83FDE1AB0>
for row in res:
    print(row)
    
('Paul', '16778909876', '1990-01-01', 1)
('Tom', '16778909876', '1990-01-01', 1)
('Mike', '16778909876', '1990-01-01', 1)
('James', '16778909876', '1990-01-01', 1)

sql = "insert into LinkMan values ('Marrry', '12345678', '1991-01-01', 0)"
c.execute(sql)
<sqlite3.Cursor object at 0x000001C83FDE1AB0>
conn.commit()

sql = "update LinkMan set tel='9999999' where name='Tom'"
c.execute(sql)

sql = "select oid,* from Linkman"
c.execute(sql)
<sqlite3.Cursor object at 0x000001C83FDE1B90>
lst = c.fetchall()
lst
[(1, 'Paul', '16778909876', '1990-01-01', 1), (2, 'Tom', '9999999', '1990-01-01', 1), (3, 'Mike', '16778909876', '1990-01-01', 1), (4, 'James', '16778909876', '1990-01-01', 1), (5, 'Marrry', '12345678', '1991-01-01', 0)]
for row in lst:
    print(row)
    
(1, 'Paul', '16778909876', '1990-01-01', 1)
(2, 'Tom', '9999999', '1990-01-01', 1)
(3, 'Mike', '16778909876', '1990-01-01', 1)
(4, 'James', '16778909876', '1990-01-01', 1)
(5, 'Marrry', '12345678', '1991-01-01', 0)

#参数化查询
name = ('Tom',)
sql = "select * from LinkMan where Name = ?"
c.execute(sql,name)
conn.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值