工位上的Python——makefile函数

                            makefile函数

python的文件类对象可以直接读写等操作,那么使用socket编写服务时,是否可以将socket对象当成文本对象直接进行读写能?答案是肯定的,可以使用makefile函数,生产文件类对象。

makefile函数:

返回一个socket关联的文件类对象,makefile有两个参数:一个为文件类的模式,另一个为缓存的模式;文件类的模式包含只读,只写和既读又写;缓存主要用在磁盘文件,但是对于交互式的网络程序,它可以阻碍程序的运行,建议关闭(0)。

实例:

#!/usr/bin/env python
#coding:utf-8
#fileName: makefile demo

import socket
import sys

port = 70
host = sys.argv[1]
filename = sys.argv[2]

s = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
fd = s.makefile(‘rw‘,0)
fd.write(filename +‘\r\n‘)
for line in fd.readlines():
    sys.stdout.write(line)
时间: 2024-07-29 00:58:23

工位上的Python——makefile函数的相关文章

工位上的Python——一倒霉的sub-message

今天想写一个邮件的解析文件,看书上有这么一段代码,源代码大致如下: import sys, email mailFile = open('./ReceivedHeader.txt','r') #mail载入并存入内存并解析它 #msg = email.message_from_file(sys.stdin) msg = email.message_from_file(mailFile) #print"msg.items() function:\n" #print msg.items()

工位上的Python——一个简单的UDP广播实例

最近状态神勇,头脑清晰,趁此良机,多多学习,多多看书,把以前看不懂的地方重新看了下,收获匪浅,现把两个简单的小例子献给大家: 先是一个简单的UDP广播接收的小服务器,使用UDP广播,需要注意下协议的使用,已经最最重要的socket选项的设置,设置为传说中的"socket.SO_BROADCAST",不需要有监听,接收客户端的消息使用recvfrom,发送消息使用sendto: 代码如下: !/usr/bin/env python  #coding:utf-8 import socket

Python 3 函数自由变量的大坑

Python中函数是一个对象, 和整数,字符串等对象有很多相似之处,例如可以作为其他函数的参数或返回对象, Python中的函数还可以携带自由变量, 两者无疑极大增进了Python的表达力. 但是Python函数自由变量的内部机制和列表解析或for循环结合使用时却暗藏杀机: #---CASE 1 fs = map(lambda i:(lambda j: i*j),range(6)) print([f(2) for f in fs]) #---CASE 2 fs = [lambda j:i*j f

python之函数的参数

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解. Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码. 位置参数 我们先写一个计算x2的函数: def power(x): return x * x 对于powe

python的函数

一 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定

Python基础知识——Windows上使用python

与大多数Unix系统和服务不同,Windows不需要Python本地,因此不预安装一个版本的Python.但是,CPython团队已经为每个版本编译Windows安装程序(MSI软件包)多年. 随着Python的不断发展,一些以前被支持的平台不再受支持(由于缺乏用户或开发人员).检查PEP 11有关所有不受支持的平台的详细信息. 仍然支持Windows CE. 在Cygwin的安装程序提供安装Python解释器,以及(参见Cygwin包的源,维护者的版本) 有关 具有预编译安装程序的平台的详细信

python 返回函数

返回函数 Python的函数不但可以返回int.str.list.dict等数据类型,还可以返回函数! 例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写: def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g 仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g.由于函数 g 也是一个对象,函数名 g 就是指向函数 g 的变量,所以,最外层函数 f 可以

在大型项目上,Python 是个烂语言吗

Robert Love, Google Software Engineer and Manager on Web Search. Upvoted by Kah Seng Tay, I was the Head TA for a class taught in Java at MIT. I used… Robert has 10+ answers in Google Engineering. Man, I cannot imagine writing let alone maintaining a

python基础——函数对象和闭包

关于函数对象和闭包 闭包(closure)是函数式编程的重要的语法结构.不同的语言实现闭包的方式不同.Python以函数对象为基础,为闭包这一语法结构提供支持的 (我们在特殊方法与多范式中,已经多次看到Python使用对象来实现一些特殊的语法).Python一切皆对象,函数这一语法结构也是一个对象.在函数对象中,我们像使用一个普通对象一样使用函数对象,比如更改函数对象的名字,或者将函数对象作为参数进行传递. 一.函数对象: 1.函数可以当参数传递 示例: #把函数当成参数传递 def foo()