__MagicPower
Do one thing and do it best!

导航

 

来源于Python核心编程第二版本,此随笔只是为了让自己加深印象。

环境 OS X Python版本2.7.10

 1 #!/usr/bin/env python
 2 #--*-- coding:utf-8 --*--
 3 
 4 'makeTextFile.py  -- Create text file'
 5 
 6 import os
 7 ls = os.linesep
 8 fname = 'test'
 9 #get filename
10 while True:
11     if os.path.exists(fname):
12         print "ERROR: '%s' already exists"%fname
13     else:
14         break
15 
16 #get file content (text) lines
17 all = []
18 print "\nEnter lines('.' by itself to quit).\n"
19 
20 #loop until user terminates input
21 while True:
22     entry = raw_input('>')
23     if entry == '.':
24         break
25     else:
26         all.append(entry)
27 
28 #write lines to file with proper line-ending
29 fobj = open(fname,'w')
30 fobj.writelines(['%s%s'%(x,ls) for x in all])
31 fobj.close()
32 print 'Done!'

运行结果

 

核心技巧:使用局部变量替换模块变量

类似os.linesep这样的名字需要解释器做两次查询 (1)查找os以确认它是一个模块 (2)在这个模块中查找linesep变量。因为模块也是全局变量,我们多消耗系统资源

如果你频繁使用一个属性,建议为该属性取一个本地变量别名。变量再查找速度将会快很多!

 

os.path.exists()是os模块中一个函数,当有输入一个不存在的文件名时候 会返回False。

fobj.writelines(['%s%s'%(x,ls) for x in all]) 这种结构叫做列表解析。
'%s%s'为每一行添加行结束符,(x,ls)表示每一行及其行结束符,对于Unix平台是'\n' 对于DOS或WIN32则是'\r\n'
通过使用os.linesep我们不需要考虑程序运行在什么平台,也不需要根据平台决定使用哪种行结束符。文件对象writeline()方法接收包含结束符的结果列表,并将
其写入文件

读取文件操作
 1 #!/usr/bin/env python
 2 #--*-- coding:utf-8 --*--
 3 'readTextFile.py -- read and display text file'
 4 
 5 #get filename
 6 fname = raw_input('Enter filename:')
 7 
 8 #attempt to open file for reading
 9 try:
10     fobj = open(fname,'r')
11 except IOError,e:
12     print "*** file open error:",e
13 else:
14     #display contents to the screen
15     for eachline in fobj:
16         print eachline,
17     fobj.close()
18     

raw_input() 获取用户输入的文件名

打开文件 ,利用for循环进行读取并显示 Simple stuff...

 
posted on 2015-11-27 15:14  __MagicPower  阅读(202)  评论(0编辑  收藏  举报