Python核心编程之第一个Python程序

#!/usr/bin/env python

#makeTextFile.py ---- create text file

import os
ls = os.linesep

#get filename
while True:
    fname = raw_input('Enter filename:')
    if os.path.exists(fname):
        print "ERROR:'%s'already exists" % fname
    else:
        break

#get file content (text) lines
all = []
print "\nEnter lines ('.'by itself to quit).\n"

#loop until user terminates input
while True:
    entry = raw_input('>')
    if entry == '.':
        break
    else:
        all.append(entry)

#write lines to file with proper line-ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x, ls) for x in all])
fobj.close()
print 'Done!'

break 指示跳出while循环语句。


解析:fobj.writelines(['%s%s' % (x, ls) for x in all])

当输入内容保存在内存中,需要将其保存到文件。    打开文件准备进行写操作。

将内存中得到内容逐行写入文件。每个文件都需要一个行结束符(或者文件结束符)。代码结构称为列表解析。它完成:

对我们文件的每一行,根据程序运行平台添加一个合适的行结束符。'%s%s'为每行添加行结束符,(x, ls)表示每一行及其行结束符,对Unix平台是'\n', 对DOS或win32平台式'\r\n'。通通过使用os.lineseq,我们不关心程序运行在什么平台,也不必涛根据不同的平台决定使用哪种行结束符。文件对象的writelines()方法接收包含行结束符的结果列表,并将它写入文件。

#!/usr/bin/env Python

#ReadTextFile.py ---- read and display text file

#get filename
fname = raw_input("Enter filename:")
print
#attempt to open file for reading
try:
    fobj = open(fname, 'r')
except IOError, e:
    print '*** file open error:', e
else:
    #display contents to the screen
    for eachLine in fobj:
        print eachLine,
    fobj.close()

try-except-else语句:

try子句是一段我们希望检测错误的代码块。即我们的动作;

except子句是我们处理错误的地方,检查try的动作,--通常是IOERROR类型的错误。

else子句在try代码块运行无误时执行。


由于我们没有移除代表每行结束的行结束符,我们不得不抵制print语句自动生成的行结束符--通过在print语句的最后加一个逗号可以达到这一目的。(不处理的话既有两个行结束符--即回车换行2次)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值