Python论坛  - 讨论区

标题:[python-chinese] 一个简单问题,如何将一个小于256的非负整数转化为两个字节的二进制写入文件中去?

2005年04月13日 星期三 21:23

fei feiyafei at gmail.com
Wed Apr 13 21:23:28 HKT 2005

例如现在有一个list,
l=[2,4,200]
请问各位:
我如何将这些数字分别转化为二进制写入文件,并且保证每个元素分别占用了两个
字节。

如果我直接利用
f=open('test','wb')


然后利用write函数,显然有问题,意为write函数里面只能为string参数。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月13日 星期三 21:58

cpunion cpunion at 263.net
Wed Apr 13 21:58:18 HKT 2005

>>> l=[2,4,200]
>>> import struct
>>> struct.pack(‘>’ + 'H'*len(l), *l)
'\x00\x02\x00\x04\x00\xc8'
>>> struct.pack( 'H'*len(l), *l)
'\x02\x00\x04\x00\xc8\x00'


fei 写道:

>例如现在有一个list,
>l=[2,4,200]
>请问各位:
>我如何将这些数字分别转化为二进制写入文件,并且保证每个元素分别占用了两个
>字节。
>
>如果我直接利用
>f=open('test','wb')
>
>
>然后利用write函数,显然有问题,意为write函数里面只能为string参数。
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>
>
>  
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 10:48

fei feiyafei at gmail.com
Thu Apr 14 10:48:29 HKT 2005

我已经想到一个简介的办法了。
例如 将200写入文件

可以这样子,
f=open('text','wb')
f.write(chr(200))

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 11:17

Qiangning Hong hongqn at gmail.com
Thu Apr 14 11:17:24 HKT 2005

On 4/14/05, fei <feiyafei at gmail.com> wrote:
> 
> 我已经想到一个简介的办法了。
> 例如 将200写入文件
> 
> 可以这样子,
> f=open('text','wb')
> f.write(chr(200))
> 

可你这样只能把200转成了一个字节('\xc8')啊?
你的标题可是要求转成两个字节的。

en,不过反正是小于256的,自己在前头或者后头加一个'\x00'就是了。

-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050414/a94abcbf/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 11:33

cpunion cpunion at 263.net
Thu Apr 14 11:33:14 HKT 2005

奇怪。。我昨天回复了嘛,怎么我自己都看不到。

用struct.pack就可以了:

 >>> a = range(10)
 >>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> import struct
 >>> struct.pack('>' + 'h'*len(a), *a)
'\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\t'


fei 写道:

>我已经想到一个简介的办法了。
>例如 将200写入文件
>
>可以这样子,
>f=open('text','wb')
>f.write(chr(200))
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>
>
>  
>

-- 
座右铭:不怕不会,就怕不会搜!

提点建议:大家把自己的邮件客户端设置一下,这里好多邮件是乱码,如果你们看到我的邮件是乱码,也请通知我一下,以免影响交流。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 12:25

hw1979 hw1979 at gmail.com
Thu Apr 14 12:25:14 HKT 2005

我希望我写的一个module被import时可以从磁盘上读写数据,但是好像module没有 
__init__()这样的函数,以下是我现在的做法:

#module foo
import cPickle as pickle

d = pickle.load(file('data','rb') )

有没有更好的方式呢?比如说:

#module foo
import cPickle as pickle

d = []
def __init__():
    d = pickle.load(file('data','rb') )



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 13:13

Qiangning Hong hongqn at gmail.com
Thu Apr 14 13:13:28 HKT 2005

On 4/14/05, hw1979 <hw1979 at gmail.com> wrote:
> 
> 我希望我写的一个module被import时可以从磁盘上读写数据,但是好像module没有
> __init__()这样的函数,以下是我现在的做法:
> 
> #module foo
> import cPickle as pickle
> 
> d = pickle.load(file('data','rb') )
> 
> 有没有更好的方式呢?比如说:


你觉得你现在的方法有什么不好的地方呢?

#module foo
> import cPickle as pickle
> 
> d = []
> def __init__():
> d = pickle.load(file('data','rb') )
> 


-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050414/23473571/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 14:11

hw1979 hw1979 at gmail.com
Thu Apr 14 14:11:10 HKT 2005

当然有啊,假设这个module依赖一些其他的module或者数据,比较以下两种方式那 
种比较好呢?

#module foo
import sys
import cPickle as pickle

checkDepend = pickle.load(file('data','rb') ) & sys.modules[dependModule]

------------
#module foo
import sys
import cPickle as pickle

flag = False
def __init__():
    global flag
    f = file('data','rb')

    d = pickle.load(f)
    if d:
        if not sys.modules[dependModule] :
          import dependModule
          flag = True
    f.close(f)
                           

d = pickle.load(file('data','rb') )

Qiangning Hong 写道:

> On 4/14/05, *hw1979* <hw1979 at gmail.com hw1979 at gmail.com>> wrote:
>
>     我希望我写的一个module被import时可以从磁盘上读写数据,但是好像
>     module没有
>     __init__()这样的函数,以下是我现在的做法:
>
>     #module foo
>     import cPickle as pickle
>
>     d = pickle.load(file('data','rb') )
>
>     有没有更好的方式呢?比如说:
>
>
> 你觉得你现在的方法有什么不好的地方呢?
>
>     #module foo
>     import cPickle as pickle
>
>     d = []
>     def __init__():
>         d = pickle.load(file('data','rb') )
>
>
>
> -- 
> Qiangning Hong
> Get Firefox! 
> <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1 
> <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>  
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 14:37

大熊 bearsprite at gmail.com
Thu Apr 14 14:37:04 HKT 2005

写模块时,应该可以使用__init__.py文件来进行一些初始化操作的

05-4-14,hw1979 <hw1979 at gmail.com> 写道:
> 
> 
> 当然有啊,假设这个module依赖一些其他的module或者数据,比较以下两种方式那
> 种比较好呢?
> 
> #module foo
> import sys
> import cPickle as pickle
> 
> checkDepend = pickle.load(file('data','rb') ) & sys.modules[dependModule]
> 
> ------------
> #module foo
> import sys
> import cPickle as pickle
> 
> flag = False
> def __init__():
> global flag
> f = file('data','rb')
> 
> d = pickle.load(f)
> if d:
> if not sys.modules[dependModule] :
> import dependModule
> flag = True
> f.close(f)
> 
> 
> d = pickle.load(file('data','rb') )
> 
> Qiangning Hong 写道:
> 
> > On 4/14/05, *hw1979* <hw1979 at gmail.com hw1979 at gmail.com>> wrote:
> >
> > 我希望我写的一个module被import时可以从磁盘上读写数据,但是好像
> > module没有
> > __init__()这样的函数,以下是我现在的做法:
> >
> > #module foo
> > import cPickle as pickle
> >
> > d = pickle.load(file('data','rb') )
> >
> > 有没有更好的方式呢?比如说:
> >
> >
> > 你觉得你现在的方法有什么不好的地方呢?
> >
> > #module foo
> > import cPickle as pickle
> >
> > d = []
> > def __init__():
> > d = pickle.load(file('data','rb') )
> >
> >
> >
> > --
> > Qiangning Hong
> > Get Firefox!
> > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1
> > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>>
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >python-chinese list
> >python-chinese at lists.python.cn
> >http://python.cn/mailman/listinfo/python-chinese
> >
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
茫茫人海,你是我的最爱
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050414/49d12813/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 14:57

hw1979 hw1979 at gmail.com
Thu Apr 14 14:57:16 HKT 2005

__init__.py好像是一个包的时候放到那个包的目录下来实现初始化吧,单个以文 
件为模块单元的时候该怎么办呢?

大熊 写道:

> 写模块时,应该可以使用__init__.py文件来进行一些初始化操作的
>
> 05-4-14,*hw1979* <hw1979 at gmail.com hw1979 at gmail.com>> 写道:
>
>
>     当然有啊,假设这个module依赖一些其他的module或者数据,比较以下两种
>     方式那
>     种比较好呢?
>
>     #module foo
>     import sys
>     import cPickle as pickle
>
>     checkDepend = pickle.load(file('data','rb') ) &
>     sys.modules[dependModule]
>
>     ------------
>     #module foo
>     import sys
>     import cPickle as pickle
>
>     flag = False
>     def __init__():
>         global flag
>         f = file('data','rb')
>
>         d = pickle.load(f)
>         if d:
>             if not sys.modules[dependModule] :
>               import dependModule
>               flag = True
>         f.close(f)
>
>
>     d = pickle.load(file('data','rb') )
>
>     Qiangning Hong 写道:
>
>     > On 4/14/05, *hw1979* < hw1979 at gmail.com
>     hw1979 at gmail.com> hw1979 at gmail.com
>     hw1979 at gmail.com>>> wrote:
>     >
>     >     我希望我写的一个module被import时可以从磁盘上读写数据,但是好像
>     >     module没有
>     >     __init__()这样的函数,以下是我现在的做法:
>     >
>     >     #module foo
>     >     import cPickle as pickle
>     >
>     >     d = pickle.load(file('data','rb') )
>     >
>     >     有没有更好的方式呢?比如说:
>     >
>     >
>     > 你觉得你现在的方法有什么不好的地方呢?
>     >
>     >     #module foo
>     >     import cPickle as pickle
>     >
>     >     d = []
>     >     def __init__():
>     >         d = pickle.load(file('data','rb') )
>     >
>     >
>     >
>     > --
>     > Qiangning Hong
>     > Get Firefox!
>     > <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1
>     <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
>     > <
>     http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1
>     <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>>>
>     >
>     >------------------------------------------------------------------------
>     >
>     >_______________________________________________
>     >python-chinese list
>     >python-chinese at lists.python.cn
>     python-chinese at lists.python.cn>
>     >http://python.cn/mailman/listinfo/python-chinese
>     <http://python.cn/mailman/listinfo/python-chinese>
>     >
>     >
>     _______________________________________________
>     python-chinese list
>     python-chinese at lists.python.cn python-chinese at lists.python.cn>
>     http://python.cn/mailman/listinfo/python-chinese
>
>
>
>
> -- 
> 茫茫人海,你是我的最爱
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>  
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 15:21

Qiangning Hong hongqn at gmail.com
Thu Apr 14 15:21:06 HKT 2005

On 4/14/05, hw1979 <hw1979 at gmail.com> wrote:
> 
> 
> 当然有啊,假设这个module依赖一些其他的module或者数据,比较以下两种方式那
> 种比较好呢?
> 
> #module foo
> import sys
> import cPickle as pickle
> 
> checkDepend = pickle.load(file('data','rb') ) & sys.modules[dependModule]


dependModule没有定义,而且module是不能做&运算的,你的意思是不是

checkDepend = pickle.load(file('data', 'rb')) and sys.modules
['dependModule']

?

------------
> #module foo
> import sys
> import cPickle as pickle
> 
> flag = False
> def __init__():
> global flag
> f = file('data','rb')
> 
> d = pickle.load(f)
> if d:
> if not sys.modules[dependModule] :
> import dependModule
> flag = True
> f.close(f)
> 
> 
> d = pickle.load(file('data','rb') )


最后一行什么意思?笔误?
不考虑最后一行的话,我想你想写的模块完全可以写成下面这个样子:

#module foo
import sys
import cPickle as pickle

flag = False
d = pickle.load(file('data', 'rb'))
if d:
if not sys.modules['dependModule']:
import dependModule
flag = True

不需要什么__init__

而且,你写的这两个模块干的事情不一样(第一种根本就不import dependModule),没法比较那个更好。


-- 
Qiangning Hong
Get Firefox! <
http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050414/90ffc25f/attachment-0001.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 15:46

hw1979 hw1979 at gmail.com
Thu Apr 14 15:46:15 HKT 2005

明白了,直接在模块里写就可以实现__init__的意思。非常感谢:)

Qiangning Hong 写道:

> On 4/14/05, *hw1979* <hw1979 at gmail.com hw1979 at gmail.com>> wrote:
>
>
>     当然有啊,假设这个module依赖一些其他的module或者数据,比较以下两种
>     方式那
>     种比较好呢?
>
>     #module foo
>     import sys
>     import cPickle as pickle
>
>     checkDepend = pickle.load(file('data','rb') ) &
>     sys.modules[dependModule]
>
>
> dependModule没有定义,而且module是不能做&运算的,你的意思是不是
>
> checkDepend = pickle.load(file('data', 'rb')) and 
> sys.modules['dependModule']
>
> ?
>
>     ------------
>     #module foo
>     import sys
>     import cPickle as pickle
>
>     flag = False
>     def __init__():
>         global flag
>         f = file('data','rb')
>
>         d = pickle.load(f)
>         if d:
>             if not sys.modules[dependModule] :
>               import dependModule
>               flag = True
>          f.close(f)
>
>
>     d = pickle.load(file('data','rb') )
>
>
> 最后一行什么意思?笔误?
> 不考虑最后一行的话,我想你想写的模块完全可以写成下面这个样子:
>
> #module foo
> import sys
> import cPickle as pickle
>
> flag = False
> d = pickle.load(file('data', 'rb'))
> if d:
>   if not sys.modules['dependModule']:
>     import dependModule
>     flag = True
>
> 不需要什么__init__
>
> 而且,你写的这两个模块干的事情不一样(第一种根本就不import 
> dependModule),没法比较那个更好。
>
>
> -- 
> Qiangning Hong
> Get Firefox! 
> <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1 
> <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>  
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号