python 初探索

最近在学习python, 为了避免学了、找了资料结果转头就忘记的情形出现,所以还是做点笔记 记录一下。

python中json处理, 使用json 模块

  • json.dumps() 将dict类型的数据转成str :
import json 
dict_ = { 'key': 'value'} 
json.dumps(dict_, encoding="UTF-8", ensure_ascii=False)
  • json.loads() 将str类型的数据转成dict
str_ = '{ 'key': 'value'}'
json.loads(str_) 
  • json.dump() 将dict类型的数据转成str,并写入到json文件
def save_file(filename, data):
    with open(fielname,"w") as f:
        json.dump(data, f,  encoding="UTF-8", ensure_ascii=False)  

读写csv文件, 使用csv模块

写csv文件 :
open(文件名 , 打开模式)函数打开一个文件
文本打开模式有:

  1. r->只读;
  2. w->只写;
  3. w+ ->读写,文件存在打开文件,并从开头开始编辑,原有内容会被删除。文件不存在,创建新文件;
  4. a+ ->读写, 文件已存在,文件指针将放在文件的结尾, 文件打开时是追加模式。文件不存在, 创建文件;
import csv

header = ['header1', 'header2']
def write_csv(filename, data):
	with open(filename, 'w') as f:
		writer = csv.DictWriter(f, header)
		writer.writeheader()  # csv文件写 header
		# data 是 list
		if type(data).__name__ == 'list': # 判断data 类型
			for i in data:
				 writer.writerow(i)
		else: # data不为list
			 writer.writerow(data)

def write_csv_a(filename, data): # 追加形式写文件
	with open(filename, 'a+') as f:   
	     writer = csv.DictWriter(f, header)
	     for i in data:
	         writer.writerow(i)
读取csv文件内容到另一个csv文件时希望csv文件 header 不被读取, 即读取文件内容是忽略第一行。使用 itertools 模块
from itertools import islice

def read_file(filename, data):
	with open(filename, 'r') as f:
			reader = csv.reader(f) 
			for i in islice(reader, 1, None):
				pass
			
def read_line(filename, data):
	with open(filename, 'b') as f:
	        read = f.readlines()
	        for i in read:
	            i = i.strip("\n") # 去掉每行数据的换行符
	            pass

python 连接 Mongodb

使用pymongo模块, 数据库结果打印使用jsonb模块(使用与json类似)

import pymongo
import jsonb
def connect_db():
    uri = 'mongodb://' + 数据库账户名 + ':' + 密码 + '@' + host + ':' + port
    myclient = pymongo.MongoClient(uri)
    mydb = myclient[数据库名称]
    mycol = mydb[数据表]
	return mycol
	
#  查找结果并存储为csv 文件
def find_db():
	col = connect_db()
	x = col.find({})
	# col.find({'time': {"$regex": '2018-10-15'}})  使用正则查询
	# col.find({'time': {'$exists': 0}}) 查找time 字段不存在的结果 
	# 打印结果
	print jsonb.dumps(x, encoding="UTF-8", ensure_ascii=False)
	data  =  jsonb.loads(jsonb.dumps(x))
	write_csv(filename, data)

猜你喜欢

转载自blog.csdn.net/www_uu/article/details/83066632