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基础篇(九)的更多相关文章

  1. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  2. python基础篇-day1

    python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...

  3. python基础篇之进阶

    python基础篇之进阶 参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html python种类 1. cpython  使用c解释器生产 ...

  4. python基础篇(六)

    PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...

  5. python基础篇(五)

    PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...

  6. python基础篇(一)

    PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...

  7. python基础篇(二)

    PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...

  8. python基础篇(三)

    PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...

  9. python基础篇(四)

    PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...

随机推荐

  1. c语言基础学习02_windows系统下的cmd命令

    =============================================================================注意:cmd的命令很多,需要用的时候可以查询即 ...

  2. 分布式监控系统--zabbix

    1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 2.监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/代理端/服务器端/, ...

  3. for语句,你真正搞懂了吗?

    今天看书时,无意间看到了这个知识点,啥知识点?也许在各位大神看来,那是再简单不过的东西了. 说来惭愧.原来直到今天我才真正搞懂for语句. for语句的结构如下所示: for(语句A;语句B;语句C) ...

  4. Web前端性能优化——如何提高页面加载速度

    前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒, ...

  5. 局域网内一台电脑的ip地址自己会变,怎样让它不变

    有两种方法可以让局域网内的电脑拥有固定的ip地址: 方法一:使用DHCP的静态地址分配功能(以TP-Link TL-WR847路由器为例). 打开浏览器,输入路由器LAN口的ip地址和管理员用户名.密 ...

  6. 《并行程序设计导论》——MPI(Microsoft MPI)(1):Hello

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  7. DALI 2.0解码模块

    DALI2.0调光解码模块使用手册 一.概述(联系人:张先生,电话:13923882807,QQ:813267849) 欢迎使用本公司的DALI 2.0解码模块,该模块支持"DALI第二套协 ...

  8. Thrift之TProtocol系列TJSONProtocol解析

    在了解JSON协议之前,朋友们可以先去了解一下JSON的基础知识,和ASCII基本分布,关于JSON一些常识请见这里; JSON (JavaScript Object Notation)是一种数据交换 ...

  9. list类型

    list是一个链表结构,可以模拟栈,队列 lpush list中压入一个元素   模拟栈 lrange  取出list的中的元素(0 -1 表示从头取到尾) rpush list中压入一个元素   模 ...

  10. linux_http协议

    什么是http协议? 超文本传输协议 最流行www服务,是http协议的实现 ssh,nfs,rsync客户端(Client)和服务端(Server),C/S架构,局域网内部用,胖客户端 http协议 ...