您的位置:首页 > 编程语言 > Python开发

Python 文件操作

2015-11-27 15:14 696 查看
来源于Python核心编程第二版本,此随笔只是为了让自己加深印象。

环境OSXPython版本2.7.10

#!/usr/bin/envpython
#--*--coding:utf-8--*--

'makeTextFile.py--Createtextfile'

importos
ls=os.linesep
fname='test'
#getfilename
whileTrue:
ifos.path.exists(fname):
print"ERROR:'%s'alreadyexists"%fname
else:
break

#getfilecontent(text)lines
all=[]
print"\nEnterlines('.'byitselftoquit).\n"

#loopuntiluserterminatesinput
whileTrue:
entry=raw_input('>')
ifentry=='.':
break
else:
all.append(entry)

#writelinestofilewithproperline-ending
fobj=open(fname,'w')
fobj.writelines(['%s%s'%(x,ls)forxinall])
fobj.close()
print'Done!'


运行结果



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

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

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

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

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

读取文件操作


#!/usr/bin/envpython
#--*--coding:utf-8--*--
'readTextFile.py--readanddisplaytextfile'

#getfilename
fname=raw_input('Enterfilename:')

#attempttoopenfileforreading
try:
fobj=open(fname,'r')
exceptIOError,e:
print"***fileopenerror:",e
else:
#displaycontentstothescreen
foreachlineinfobj:
printeachline,
fobj.close()



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

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


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: