码迷,mamicode.com
首页 > 编程语言 > 详细

Python 文件操作

时间:2015-11-27 17:33:41      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

来源于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...

 

Python 文件操作

标签:

原文地址:http://www.cnblogs.com/magicpower/p/5000759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!