Python中的一个文件句柄问题
2007-12-08 14:20
239 查看
sharkke<sharkke.w@gmail.com> 13:26:05
file1 内容:11 file2内容:11
22 33
33 55
44 66
#/!/usr/bin/python
opfile1=open(file1,'r')
opfile2=open(file2,'r')
for i in opfile1.readlines():
for m in opfile2.readlines():
if i == m
print i
else:
pass
sharkke<sharkke.w@gmail.com> 13:26:30
大家看看这个会输出什么?
sharkke<sharkke.w@gmail.com> 13:29:20
它的输出是“11”而不是“11
33”
为什么?
xun(95217382) 13:31:30
召唤达人来解答下
ExileR<ly5_2@hotmail.com> 13:33:42
是不opfile2的文件句柄已经到了文件末尾
大师兄(H)(40375) 13:34:16
pass 啥意思啊
sharkke<sharkke.w@gmail.com> 13:34:36
readlines 不是返回一个列表吗?
xun(95217382) 13:34:41
什么都不做
大师兄(H)(40375) 13:40:10
for i in opfile1.readlines():
只执行了1次 是不是不能嵌套呢
sharkke<sharkke.w@gmail.com> 13:40:35
我调试的也是这样,可是为什么呢?
行在路上(190253687) 13:41:42
试试先把文件内容都读出来,再比较
sharkke<sharkke.w@gmail.com> 13:42:23
都读出来到两个列表里,可以,
sharkke<sharkke.w@gmail.com> 13:42:45
可是跟直接比较有什么不同呢?
行在路上(190253687) 13:42:45
那可能就是句柄问题
行在路上(190253687) 13:42:59
第一次循环已经到末尾了
sharkke<sharkke.w@gmail.com> 13:43:19
有一点明白了
行在路上(190253687) 13:43:38
你输出 一下就知道了
行在路上(190253687) 13:43:52
跟踪 一下
sharkke<sharkke.w@gmail.com> 13:47:14
是句柄问题,
xun(95217382) 13:48:58
怎么说
sharkke<sharkke.w@gmail.com> 13:49:19
如果在 for m in opfile2.readlines(): 前加一句 print opfile2.readlines()
则只有第一次会输出 opfile2 的内容列表,后面都是 []
sharkke<sharkke.w@gmail.com> 13:50:26
如果加到 for m in opfile2.readlines(): 后,则全部输出 []
暴力鸡(110826317) 13:51:28
....
xun(95217382) 13:51:44
第一次输出的opfile2内容列表是
print opfile2.readlines() 输出的
sharkke<sharkke.w@gmail.com> 13:52:12
使得
xun(95217382) 13:52:13
懂了
xun(95217382) 13:52:24
其实比较可以试试set的
xun(95217382) 13:53:20
>>> opfile1=open("file1.txt",'r')
>>> opfile2=open("file2.txt",'r')
>>> a=set(opfile1.readlines())
>>> b=set(opfile2.readlines())
>>> a&b
set(['11/n', '33/n'])
sharkke<sharkke.w@gmail.com> 13:53:40
这么简单哦
xun(95217382) 13:53:50
恩
sharkke<sharkke.w@gmail.com> 13:57:30
http://docs.python.org/lib/types-set.html
set 的参考
file1 内容:11 file2内容:11
22 33
33 55
44 66
#/!/usr/bin/python
opfile1=open(file1,'r')
opfile2=open(file2,'r')
for i in opfile1.readlines():
for m in opfile2.readlines():
if i == m
print i
else:
pass
sharkke<sharkke.w@gmail.com> 13:26:30
大家看看这个会输出什么?
sharkke<sharkke.w@gmail.com> 13:29:20
它的输出是“11”而不是“11
33”
为什么?
xun(95217382) 13:31:30
召唤达人来解答下
ExileR<ly5_2@hotmail.com> 13:33:42
是不opfile2的文件句柄已经到了文件末尾
大师兄(H)(40375) 13:34:16
pass 啥意思啊
sharkke<sharkke.w@gmail.com> 13:34:36
readlines 不是返回一个列表吗?
xun(95217382) 13:34:41
什么都不做
大师兄(H)(40375) 13:40:10
for i in opfile1.readlines():
只执行了1次 是不是不能嵌套呢
sharkke<sharkke.w@gmail.com> 13:40:35
我调试的也是这样,可是为什么呢?
行在路上(190253687) 13:41:42
试试先把文件内容都读出来,再比较
sharkke<sharkke.w@gmail.com> 13:42:23
都读出来到两个列表里,可以,
sharkke<sharkke.w@gmail.com> 13:42:45
可是跟直接比较有什么不同呢?
行在路上(190253687) 13:42:45
那可能就是句柄问题
行在路上(190253687) 13:42:59
第一次循环已经到末尾了
sharkke<sharkke.w@gmail.com> 13:43:19
有一点明白了
行在路上(190253687) 13:43:38
你输出 一下就知道了
行在路上(190253687) 13:43:52
跟踪 一下
sharkke<sharkke.w@gmail.com> 13:47:14
是句柄问题,
xun(95217382) 13:48:58
怎么说
sharkke<sharkke.w@gmail.com> 13:49:19
如果在 for m in opfile2.readlines(): 前加一句 print opfile2.readlines()
则只有第一次会输出 opfile2 的内容列表,后面都是 []
sharkke<sharkke.w@gmail.com> 13:50:26
如果加到 for m in opfile2.readlines(): 后,则全部输出 []
暴力鸡(110826317) 13:51:28
....
xun(95217382) 13:51:44
第一次输出的opfile2内容列表是
print opfile2.readlines() 输出的
sharkke<sharkke.w@gmail.com> 13:52:12
使得
xun(95217382) 13:52:13
懂了
xun(95217382) 13:52:24
其实比较可以试试set的
xun(95217382) 13:53:20
>>> opfile1=open("file1.txt",'r')
>>> opfile2=open("file2.txt",'r')
>>> a=set(opfile1.readlines())
>>> b=set(opfile2.readlines())
>>> a&b
set(['11/n', '33/n'])
sharkke<sharkke.w@gmail.com> 13:53:40
这么简单哦
xun(95217382) 13:53:50
恩
sharkke<sharkke.w@gmail.com> 13:57:30
http://docs.python.org/lib/types-set.html
set 的参考
相关文章推荐
- 遇到一个在脚本中读取文件内容占用文件句柄的小问题
- Python re包search函数发现的一个问题
- 分享一个连接,python扩展包下载地址分享包括numpy,scipy等,解决了win8系统不能使用这些扩展包的问题!
- 使用python-cassandra遇到的一个问题
- 一个python的问题——二分搜索
- Python调用不在同一个文件夹下的Python程序,并且如何解决pyinstaller打包路径问题
- 一个Python中的闭包问题
- 一个python处理dos和unix格式文本的换行的问题
- 从Python列表Remove操作的一个小问题说开去
- Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
- 关于他们回答的 "怎样在桌面建一个python GUI的快捷方式" 这个问题
- go和python变量赋值遇到的一个问题
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题 - 突破中的IT结构师 - 51CTO技术博客
- 今天写python的一个定时关机小脚本遇到的问题
- python安装MYSql问题一个解决
- python默认的是17位小数的精度,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过17位小数)的时候该怎么做呢?
- 从使用Python开发一个Socket示例说到开发者的思维和习惯问题
- 2017.7.5(转)python2.7,一个困扰了我一天的print问题
- Python读写文件的一个问题
- 分享脚本,同一个问题,php,python,shell的写法