python----文件、数据库、网络编程
2014-04-01 16:07
453 查看
一.文件
1.打开文件
open函数用来打开文件,语法格式:open(name[,mode[,buffering]])
name:文件名,唯一的强制参数
mode:模式,可选
buffering:缓冲,可选
例; f = open(r'c:\text\somefile.txt')
如果文件不存在,则发生IOERROR异常。
文件模式(mode)
默认读模式,如果要向文件写入内容,必须提供模式参数。
open函数中的模式参数:
‘r’ : 读模式
'w' :写模式
'a' :追加模式
'b' :二进制模式(可添加到其他模式中使用)改变处理文件方法。
'+' :读/写模式(可添加到其他模式中使用) 例: 'r+'能在打开一个文件时用来读写使用
缓冲(buffering)
open函数第3个参数控制文件的缓冲。
0/False : 无缓冲(所有读写操作直接针对硬盘)
1/True: 有缓冲(内存代替硬盘,只有使用flush或者close时才会更新硬盘数据)
大于1: 代表缓冲区大小(单位字节)
-1(或任何负数): 代表使用默认缓冲区大小
2.基本文件方法
1.读和写
写入:f=open('D:\somefile.txt','w') f.write('hello, ') f.write('world') f.close()
读取:
读写行
file.readline()读取单独一行
file.readline(字节)读取字符的最大值
readines读取一个文件的所有行并将其作为列表返回
writelines与readlines相反。注意:writelines不会自动增加新行,需要自己添加。没有writeline方法。
''\r'和“\r\n”
2.管式输出
管道符号(|)将一个命令的标准输出和下一个命令的标准输入连载一起。cat somefile.txt | python somescript.py
3.对文件内容进行迭代
按字节处理while循环+read方法:
#用read方法对每个字符进行循环
f=open(r'D:\somefile.txt') while True: char=f.read(1) if not char:break print(char) f.close()
按行操作(read替换为readline)
读取所有内容(read不加参数)
使用fileinput实现懒惰行迭代
在需要读取一个非常大的文件进行迭代行的操作时,readlines会占用太多内存。可以使用while+readline代替。
用fileinput模块实现懒惰行迭代,fileinput模块包含了打开文件的函数;
import fileinput for line infileinput.input('D:/somefile.txt'): print(line)
4.文件迭代器
文件对象是可迭代的。for line inopen(filename):
print(line)
sys.stdin是可迭代的。
二、数据库支持
1、python数据库API
提供简单、标准化的数据库接口,所以数据库的包装模块应当遵循。全局变量
apilevel----------------- Python API版本
threadsafety----------模块的线程安全等级
paramstyle------------在SQL查询中使用的参数风格
异常
连接和游标
连接对象代表的是和SQL数据库的通信连接。
用于执行查询和检查结果。结果可以一个一个获得或者多个一起获得
类型和特殊值
构造函数处理日期、时间对象、二进制数据对象
特殊值表示关系型数据库的类型,比如STRING、NUMBER、DATATIME
2、SQLite和PySQLite
SQLite小型的嵌入式SQL数据库,它的Python包装叫做PYSQLite。速度快、易于使用,不需要建立单独服务器。3、入门操作
import sqlite3 conn=sqlite3.connect('数据库文件名.db')#相对路径或绝对路径 curs=conn.cursor()#获取连接的游标 conn.commit()#提交 conn.close()
1、网络模块
socket模块服务器
import socket s = socket.socket() host = socket.gethostname() port = 1234 s.bind((host, port)) s.listen(5) #允许的排队等待连接数目 while True: c, addr = s.accept() print ('Got connection from', addr) c.send('Thank you for connecting') #发送数据 c.close()
客户端
import socket s = socket.socket() host = socket.gethostname() port = 1234 s.connect((host, port)) print s.recv(1024)
urllib和urlib2模块
打开远程文件urlopen,支持迭代、close、readline、readline和readlines。
urlopen('http://www.baidu.com')
获取远程文件
urlopen提供读取数据的类文件对象。如果希望urllib为你下载文件并在本地文件中储存一个文件的副本,使用urlretrieve,返回元组(filename,headers)而不是文件对象。
urlretrieve('http://www.baidu.com','c:\\baidu.html')
SocketServer模块
SocketServer模块是标准库中很多服务器框架的基础,包含四个基本类:TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer.
from SocketServer import TCPServer, StreamRequestHandler class Handler(StreamRequestHandler):#处理程序 def handle(self): addr = self.request.getpeername() print ('Got connection from', addr) self.wfile.write('Thank you for connecting') server = TCPServer(('', 1234), Handler) server.serve_forever()
2、多连接
分叉(forking)from SocketServer import TCPServer, ForkingMixIn, StreamRequestHandler class Server(ForkingMixIn, TCPServer): pass class Handler(StreamRequestHandler): def handle(self): addr = self.request.getpeername() print 'Got connection from', addr self.wfile.write('Thank you for connecting') server = Server(('', 1234), Handler) server.serve_forever()
线程
from SocketServer import TCPServer, ThreadingMixIn, StreamRequestHandler class Server(ThreadingMixIn, TCPServer): pass class Handler(StreamRequestHandler): def handle(self): addr = self.request.getpeername() print 'Got connection from', addr self.wfile.write('Thank you for connecting') server = Server(('', 1234), Handler) server.serve_forever()
异步I/O
机制:select模块的select函数、poll函数
处理方法:只处理在给定时间内真正要进行通信的客户端
时间片轮转的方式提供服务。
import socket, select s = socket.socket() host = socket.gethostname() port = 1234 s.bind((host, port)) s.listen(5) inputs = [s] while True: rs, ws, es = select.select(inputs, [], []) #The return value is a triple of lists of objects that are ready for r in rs: if r is s: c, addr = s.accept() print ('Got connection from', addr) inputs.append(c) else: try: data = r.recv(1024) disconnected = not data except socket.error: disconnected = True if disconnected: print (r.getpeername(), 'disconnected') inputs.remove(r) else: print data
相关文章推荐
- Python -- 网络编程 -- Socket发送文件
- python 专题六 网络编程 及文件操作
- Python网络编程05----django与数据库的交互
- Python网络编程之基于socket实现文件上传
- python基本知识、数据库、网络、编程等总结
- python网络编程之文件下载实例分析
- python读取串口、网络编程、文本处理与文件操作
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- python天天进步(8)--网络编程之文件下载
- 1.23python 网络通信编程与数据库
- [代码笔记] python 之网络编程: 使用udp 发送音频文件
- python网络编程之文件下载实例分析
- 将TXT文件数据存进Python内置数据库splite3
- Visual C# 2008+SQL Server 2005 数据库与网络开发--12.2.10 编程的方式更改控件属性
- python 网络下载文件
- Python 一步一步学网络编程
- python 网络编程服务端与客户端
- 网络编程_多线程改进多个客户端上传文件案例
- Python--Socket网络编程
- Android网络编程 --断点续传下载文件