python----文件、数据库、网络编程
来源:互联网 发布:c语言标识符和关键字 编辑:程序博客网 时间:2024/05/16 12:33
一.文件
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)
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 fileinputfor 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 sqlite3conn=sqlite3.connect('数据库文件名.db')#相对路径或绝对路径curs=conn.cursor()#获取连接的游标conn.commit()#提交conn.close()
1、网络模块
- socket模块
- 服务器
import sockets = socket.socket()host = socket.gethostname()port = 1234s.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 sockets = socket.socket()host = socket.gethostname()port = 1234s.connect((host, port))print s.recv(1024)
- urllib和urlib2模块
- 打开远程文件urlopen,支持迭代、close、readline、readline和readlines。
- 获取远程文件
urlretrieve('http://www.baidu.com','c:\\baidu.html')
- SocketServer模块
from SocketServer import TCPServer, StreamRequestHandlerclass 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, StreamRequestHandlerclass Server(ForkingMixIn, TCPServer): passclass 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, StreamRequestHandlerclass Server(ThreadingMixIn, TCPServer): passclass 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
处理方法:只处理在给定时间内真正要进行通信的客户端
时间片轮转的方式提供服务。
import socket, selects = socket.socket()host = socket.gethostname()port = 1234s.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
0 0
- python----文件、数据库、网络编程
- python基本知识、数据库、网络、编程等总结
- Python网络编程05----django与数据库的交互
- python网络编程学习笔记(9):数据库客户端
- Python网络编程06----django数据库的增删改查
- python 专题六 网络编程 及文件操作
- python读取串口、网络编程、文本处理与文件操作
- python -- 网络和数据库
- Python网络编程例子
- Python的网络编程
- python网络编程
- Python网络编程
- Python的网络编程
- python_网络编程
- Python PycURL 网络编程
- python中的网络编程
- Python网络编程基础
- python网络编程
- SDWebImage-ProgressBar
- Jackson 高性能的JSON处理 android/移动开发必备jackson
- php gb2312转big5 函数
- 动态显示可输入的字数
- MFC 键盘事件虚拟码对照表
- python----文件、数据库、网络编程
- JSP中文乱码问题解决
- Linux下TCP网络服务器实现源代码
- C++ 学习笔记(二)头文件和源文件的关系
- 体验常成员函数
- 关于“The serializable class XXX does not declare a static final serialVersionUID field of type long” 错
- 易管理摘
- keytool+tomcat配置HTTPS双向证书认证
- 项目1-体验常成员函数