找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 261|回复: 3

[求助] isinstance()执行结果与预期不符

1

主题

3

帖子

3

积分

贫民

积分
3
gaara_yx 发表于 2021-3-5 17:04:44 | 显示全部楼层 |阅读模式
  1. <blockquote>#!/usr/bin/python
复制代码
代码如上。
环境1:
python版本:
Python 2.7.3 (default, Oct 26 2016, 21:04:23)
[GCC 4.6.3] on linux2


PC为32位的12.04 ubuntu虚拟机:
Ubuntu 12.04.5 LTS \n \l
Linux XXX 3.5.0-40-generic #62~precise1-Ubuntu SMP Fri Aug 23 17:59:10 UTC 2013 i686 i686 i386 GNU/Linux



执行结果为:
9
not int!

环境2:
python 版本:
Python 2.7.3 (default, Oct 26 2016, 21:01:49)
[GCC 4.6.3] on linux2



PC为64位的12.04 ubuntu虚拟机:
Ubuntu 12.04.5 LTS \n \l
Linux XXX 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

执行结果为:
9
int!


疑问:
二者差异的原因是什么?如果让环境1得到预期为int的结果?
谢谢~
回复

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
gaara_yx  楼主| 发表于 2021-3-5 17:08:14 | 显示全部楼层
代码没贴好,重传如下:

#!/usr/bin/python
import os
import sys

filename = "/tmp/pytmp"
out = open(filename, 'wb')
out.write("123456789")
out.seek(0,2)
file_len = out.tell()

print file_len
if not isinstance(file_len, int):
        print "not int!"
if isinstance(file_len, int):
        print "int!"
回复 支持 反对

使用道具 举报

0

主题

828

帖子

828

积分

圣骑士

积分
828
sheeboard 发表于 2021-3-6 09:51:07 | 显示全部楼层
out.write("123456789")这里已经错了,因为是wb的意思是写入binary,是以byte写的。而且文件没close(),数据就根本没写入文件,要么用with open。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
gaara_yx  楼主| 发表于 2021-3-8 09:24:50 | 显示全部楼层
sheeboard 发表于 2021-3-6 09:51
out.write("123456789")这里已经错了,因为是wb的意思是写入binary,是以byte写的。而且文件没close(),数据 ...

多谢解答

其实上述代码只是我简化贴出,这些问题应不影响isinstance()的执行结果
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表