txt文本文件读取:
#txt文本文件读取
def txt_writter():
"""写文件"""#函数说明文档
with open('data.txt','w',encoding='utf-8') as f:
f.write('hi\n')#写一行
lines = [
'hello\n'
'welcome\n'
]
f.writelines(lines)#写多行
def txt_read():
"""读文件"""
with open('data.txt',encoding='utf-8') as f:
for line in f:#逐行读取数据
print(line,end='')
if __name__ == '__main__':
txt_writter()
txt_read()
csv文件写入读取,程序包括了csv文件基本读取,通过namedtouple映射列表名字以及将csv文件读取到字典表
#csv文件读取
import csv
from collections import namedtuple
def csv_read():
'''csv文件基本读取'''
with open('data1.csv',encoding='utf-8') as f:
reader = csv.reader(f)#把f转换成csv模块下的reader,将csv文件读取到列表
headers = next(reader)#reader本身就是一个迭代器,支持遍历,可以使用next()来把指针指向第一行,表示表头(注意指next()一旦调用就不能返回了)
print(headers)#打印表头
for row in reader:#打印剩下的每行数据
print(row)#打印出每一行都是一个list,所以可以随意对每项数据进行处理
def csv_read_by_namedtuple():#namedtuple相当于定以一个简易的类,对于对象调用可以按照类的方法
'''读取csv并用namedtuple映射列名'''
with open('data1.csv', encoding='utf-8') as f:
reader = csv.reader(f)
headers = next(reader)
print(headers)
Row = namedtuple('Row',headers)#使用namedtuple定一个namedtuple对象,参数为(对象名称,列表形式的命名规则,这里直接把表头headers传入)
for r in reader:
row = Row(*r)#创建namedtuple实例,通过*把r的信息解剖给每行
print(row)
#将csv文件数据读取到字典表
def csv_read_by_dict():
'''读取csv文件数据到字典表'''
with open('data1.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)#创建字典表实例
for row in reader:
print('{} -> {} -> {} -> {}'.format(row['userId'],row.get('movieId'),row['rating'],row['timestamp']))
if __name__ == '__main__':
csv_read()
csv_read_by_namedtuple()
csv_read_by_dict()
csv文件写入:
import csv
#写入csv文件
def csv_writer():
'''写入csv文件'''
headers = ['编号','课程','讲师']
rows = [
(1,'python','Tom'),
(2,'django','Tom'),
(3,'deep learning','Tom')
]
with open('my_course.csv','w',encoding='utf-8',newline='') as f:
writer = csv.writer(f)#写入器
writer.writerow(headers)#写入表头,一行
writer.writerows(rows)#写入其余数据,多行
#字典表写入csv文件
def csv_writer_dict():
'''字典表写入csv文件'''
headers = ['name','age','courses']
rows = [
{'name':'A','age':'18','courses':'python'},
{'name': 'B', 'age': '18', 'courses': 'python'},
{'name': 'C', 'age': '18', 'courses': 'python'},
dict(name = 'D',age = 18,courses = 'python')
]
with open('my_name.csv','w',encoding='utf-8',newline='') as f:
writer = csv.DictWriter(f,headers)#字典表写入器,参数可以直接传入表头
writer.writeheader()
writer.writer(rows)
#读取csv文件
def csv_read():
'''读取csv文件'''
with open('my_course.csv',encoding='utf-8') as f:
reader = csv.reader(f)#读取器
headers = next(reader)
print(headers)
for row in reader:
print(row)
if __name__ == '__main__':
csv_writer()
csv_read()
csv_writer_dict()
json文件(类似于python中的字典表)写入读取
import json
#dict和josn的相互转化
def json_basic():
data = {
'ID': 1,
'Course': 'Python'
}
print(data)
print('-'*20)
josn_str = json.dumps(data)#把字典表数据data转化为josn格式的字符串
print(josn_str)
josn_data = json.loads(josn_str)#将josn格式的字符串转化为字典表
print('-' * 20)
print(josn_data)
#写json文档
def json_writer_file():
'''写josn文档'''
data = {
'ID': 1,
'Course': 'Python'
}
with open('data.json','w',encoding='utf-8') as f:
json.dump(data,f)#将字典表数据写入json文件
#读json文档
def json_read_file():
'''读json文档'''
with open('data.json',encoding='utf-8') as f:
data = json.load(f)#读取json文件
print(data)
#类型差异
def json_type_diff():
'''类型差异'''
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))
if __name__ == '__main__':
json_writer_file()
json_read_file()
json_type_diff()