免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2240 | 回复: 5
打印 上一主题 下一主题

输出文件指定行失效了(已经解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-25 10:37 |只看该作者 |倒序浏览
本帖最后由 laohuanggua 于 2012-09-25 11:20 编辑

数据文件内容。有5行。其中第2行是空的!!
  1. # cat /opt/stuff/test.txt
  2. First let's print the whole file:

  3. To all the people out there.
  4. I say I don't like my hair.
  5. I need to shave it off.
复制代码
程序代码
  1. #!/usr/bin/python
  2. #scriptname:/opt/learnpython/19.py

  3. script,input_file=argv
  4. def print_all(datafilename):
  5.         print datafilename.read()

  6.        
  7. def rewind(datafilename):
  8.         datafilename.seek(0)

  9. def print_a_line(line_number,datafilename):
  10.         print line_number,datafilename.readline()

  11. current_file=open(datafilename)

  12. print_all(current_file)

  13. rewind(current_file)

  14. print_a_line(1,current_file)

  15. print_a_line(1,current_file)
  16. #END
复制代码
# python /opt/learnpython/19.py /opt/stuff/test.txt
  1. First let's print the whole file:

  2. To all the people out there.
  3. I say I don't like my hair.
  4. I need to shave it off.

  5. 1 First let's print the whole file:

  6. 1
复制代码
注意:最后一个是空的!!!

论坛徽章:
0
2 [报告]
发表于 2012-09-25 11:11 |只看该作者
问题解决了。第二次print_a_line的时候,顺序执行到第2行。所以必然是空的。

论坛徽章:
0
3 [报告]
发表于 2012-09-25 11:19 |只看该作者
本帖最后由 laohuanggua 于 2012-09-25 11:28 编辑

顺便说一个关于导入module的事情

我之前用
#from sys import argv
用argv就可以。

但是如果改成
import sys
则立刻报错
NameError: name 'argv' is not defined


但是
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'last_traceback', 'last_type', 'last_value', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
>>>



搞定了。
这样就可以

import sys

script,datafilename=sys.argv

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-09-25 12:18 |只看该作者
汗, 读一次偏移量就后移了, 当然是继续读第二行了.

laohuanggua 发表于 2012-09-25 11:11
问题解决了。第二次print_a_line的时候,顺序执行到第2行。所以必然是空的。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-09-25 12:19 |只看该作者
汗, 引入模块和引入模块内的名称是两码事,
  1. from sys import argv
  2. #这里就可以直接写argv

  3. import sys
  4. #这里必须写sys.argv
复制代码
laohuanggua 发表于 2012-09-25 11:19
顺便说一个关于导入module的事情

我之前用

论坛徽章:
0
6 [报告]
发表于 2012-09-26 09:39 |只看该作者
linux_c_py_php 发表于 2012-09-25 12:18
汗, 读一次偏移量就后移了, 当然是继续读第二行了.


我以为必须有一个指针下移的操作呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP