文件处理
一、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
- .excute(‘sql语句’,[参数])
- .fetchall() 返回所有到列表
- .fetchone()
- .fetchmany(size)
3、参数化查询 - ? 参数传递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()