Python基础篇(九)
Key Words: 文件迭代器,标准输入,GUI工具包,数据库操作SQLlite,socket编程
文件迭代器
>>> f= open("some.txt","r+")
>>> while True:
... line = f.readline()
... if not line : break
... else :
... print(line)
...
使用文件迭代器直接可以访问文件的每一行,而不必去使用readline方法。
>>> f= open("some.txt","r+")
>>> for line in f:
... print(line)
...
f.close()
标准输入sys. stdin:
from sys import *
for line in stdin:
if line == "bye":
break
else:
print(line)
支持Python的GUI工具包很多,使用wxPython做下面例子,wxPython是跨平台的,应用范围越来越广。
http://dev.mysql.com/downloads/connector/python/
使用Python自带的简单数据库SQLlite
>>> def format(value):
... if not value:
... return "0"
...
>>> import sqlite3
>>> conn = sqlite3.connect("food.db")
>>> curs = conn.cursor()
>>>
curs.execute执行具体的SQL语句。
>>> curs.execute('''
... create table food(
... id text primary key,
... price float,
... amou float
... )
... ''')
<sqlite3.Cursor object at 0x00BD34A0>
curs.execute(query,field)以匹配符的方式插入数据。
>>> query = "insert into food values(?,?,?)"
>>> for line in open("food.txt"):
... field = line.split(",")
... val = [format(f) for f in field]
... curs.execute(query,field)
...
<sqlite3.Cursor object at 0x00BD3860>
<sqlite3.Cursor object at 0x00BD3860>
<sqlite3.Cursor object at 0x00BD3860>
>>> curs.execute("select * from food")
<sqlite3.Cursor object at 0x00BD3860>
>>> conn.commit()
curs.fetchall()获取查询的结果。
>>> for row in curs.fetchall():
... print(row)
...
('apple', 3.0, 30.0)
('pear', 5.0, 20.0)
('banana', 3.0, '')
>>> conn.close()
sys.path下面有名为food.txt的文件,内容如下:
apple,3,30
pear,5,20
banana,3,
socket编程,可以参见:http://blog.csdn.net/chuanchuan608/article/details/17915959。分为TCP 的socket和UDP的socket,Sever端可以使用socket模块或者socketserver模块,客户端的模块可以使用一个,使用socket模块即可。
基于TCP的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.sendall("Thank you for connecting".encode())
... c.close()
...
Got connection from ('172.16.131.181', 1819)
客户端代码:
>>> import socket
>>> s = socket.socket()
>>> host = socket.gethostname()
>>> port = 1234
>>> s.connect((host,port))
>>> print(s.recv(1024).decode())
Thank you for connecting
需要注意的是,3.x的Python在发送时需要encode(),在接收时需要decode()。否则会包错:TypeError: 'str' does not support the buffer interface。
基于UDP的socket代码:
server端的代码:
>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
>>> s.bind(("127.0.0.1",8000))
>>> while True:
... data,addr = s.recvfrom(1024)
... print(data.decode(),addr)
...
...
try to connect ('127.0.0.1', 3944)
try to connect ('127.0.0.1', 4004)
client端的代码:
>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
>>> while True:
... s.sendto("try to connect".encode(),("127.0.0.1",8000))
... s.close()
... break
...
14
基于socketserver模块的服务器,客户端代码可以同上。
>>> from socketserver import TCPServer as TCP,StreamRequestHandler as SRH
>>> addr = ("127.0.0.1",8000)
>>>
>>> class MyRequestHandler(SRH):
... def handle(self):
... print("connecting from ",self.client_address)
...
>>> tcpServer = TCP(addr,MyRequestHandler)
>>> tcpServer.serve_forever()
Python基础篇(九)的更多相关文章
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- python基础篇-day1
python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...
- python基础篇之进阶
python基础篇之进阶 参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html python种类 1. cpython 使用c解释器生产 ...
- python基础篇(六)
PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...
- python基础篇(五)
PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...
- python基础篇(一)
PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...
- python基础篇(二)
PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...
- python基础篇(三)
PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...
- python基础篇(四)
PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...
随机推荐
- 洛谷 P1972 [SDOI2009]HH的项链【莫队算法学习】
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- Gym100971B Gym100971C Gym100971F Gym100971G Gym100971K Gym100971L(都是好写的题。。。) IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13, 2016
昨天训练打的Gym,今天写题解. Gym100971B 这个题就是输出的时候有点小问题,其他的都很简单. 总之,emnnn,简单题. 代码: #include<iostream> #inc ...
- Treap(树堆)
treap是排序二叉树的一种改进,因为排序二叉树有可能会造成链状结构的时候复杂度变成O(n^2)所以通过随机一个优先级的方法来维持每次让优先级最大的作为树根,然后形成一个满足: A. 节点中的key满 ...
- [国嵌笔记][029][ARM处理器启动流程分析v2]
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flas ...
- 审计日志中的AOP
审计跟踪(也称为审核日志)是一个安全相关的时间顺序记录,记录这些记录的目的是为已经影响在任何时候的详细操作,提供程序运行的证明文件记录.源或事件 MVC 自定义一个过滤器 public class A ...
- C++ 初始化列表(转)
转载自:http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.html 何谓初始化列表 与其他函数不同,构造函数除了有名字,参数列表和函 ...
- Vue2反向代理
前一段时间写了一个vue2的小项目,用的是vue-cli脚手架搭建的项目,项目里需要跨域,但又不能使用jsonp,上网查了一下,发现有一个之前没接触过的词语--反向代理. 什么是"反向代 ...
- qq客服代码实现过程
引入css,jsimages,将index.html中的qq聊天代码部分和返回顶部-部分放在head.html文件中, 将文中圈中部分删除,否则影响整个页面的样式:
- parse_url 解析 URL,返回其组成部分
parse_url - 解析 URL,返回其组成部分 array parse_url ( string $url [, int $component = -1 ] ) 本函数解析一个 URL 并返回一 ...
- JavaSE笔记-泛型
定义带泛型的类 public class Cat<T> { //可以用T定义实例变量 private T name; //可以用T定义形参 //构造器没有<> public C ...