python核心编程v2.0 第三章习题答案

工具:pycharm
3.10

#coding=utf-8
import os
ls = os.linesep

while True :
    filename = raw_input('Filename :\n')
    # wronly : 只写模式 creat:创建新文件 excl 若文件已存在则返回错误
    try:
        fd = os.open(filename, os.O_WRONLY | os.O_CREAT | os.O_EXCL)
    except OSError, e :
        print "already has the file\n"
    else:
        break

all = ''
while True :
    entry = raw_input('>')
    if entry == '.' :
        all = all + '.'
        break
    else:
        all = all + entry
        all = all +' '

os.write(fd,all)
os.close(fd)
import os

while True :
    fname = raw_input('Filename = :\n')
    if os.path.exists(fname) :
        fobj = open(fname,'r')
        for eachlines in fobj :
            print eachlines,
        fobj.close()
        break
    else:
        print "no such file"

3.11

 import os

while True :
    fname = raw_input('Filename = :\n')
    if os.path.exists(fname) :
        fobj = open(fname,'r')
        for eachlines in fobj :
             #去除每行最后的换行符
            eachlines = eachlines.strip('\n')
            print eachlines
        fobj.close()
        break
    else:
        print "no such file"

3.12

#coding=utf-8
import os
def makefile() :
    ls = os.linesep

    while True :
        filename = raw_input('Filename :\n')
        # wronly : 只写模式 creat:创建新文件 excl 若文件已存在则返回错误
        try:
            fd = os.open(filename, os.O_WRONLY | os.O_CREAT | os.O_EXCL)
        except OSError, e :
            print "already has the file\n"
        else:
            break

    all = ''
    while True :
        entry = raw_input('>')
        if entry == '.' :
            all = all + '.'
            break
        else:
            all = all + entry
            all = all +' '

    os.write(fd,all)
    os.close(fd)

def readfile() :

    while True :
        fname = raw_input('Filename = :\n')
        if os.path.exists(fname) :
            fobj = open(fname,'r')
            for eachlines in fobj :
                eachlines = eachlines.strip('\n')
                print eachlines
            fobj.close()
            break
        else:
            print "no such file"

if __name__ == '__main__' :
    while True :
        index = raw_input('read=r,write=w,quit=q:\n')
        if index == 'w':
            makefile()
        elif index == 'r' :
            readfile()
        elif index == 'q' :
            break

3.13
参考网上的代码,只加了注释其余未改动
Tkinter模块:GUI编程,用于创建图形化窗口
platform模块:用于获得操作系统,系统结构,python信息等

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#=============================================================================
#     FileName:
#         Desc:
#       Author: ToughGuy
#        Email: wj0630@gmail.com
#     HomePage: http://www.techzhai.net/
#      Version: 0.0.1
#   LastChange: 2013-02-20 14:52:11
#      History:
#=============================================================================

from Tkinter import *
import tkMessageBox,tkFileDialog
import platform

# nl = os.linesep

#从系统中打开文件,将内容读在edit.box中
def openfile():
    global filename             # 使用global声明为全局变量,方便后边的程序调用
    systype = platform.system() # 判断系统类型
    if systype == 'windows':
        basedir = 'c:\\'
    else:
        basedir = '/'
    filename = tkFileDialog.askopenfilename(initialdir=basedir)
    try:
        fobj_r = open(filename, 'r')
    except IOError, errmsg:
        print '*** Failed open file:', errmsg
    else:
        editbox.delete(1.0, END)
        for eachline in fobj_r:
            editbox.insert(INSERT, eachline)
        fobj_r.close()

#将editbox中的内容保存在当前文件中
def savefile():
    save_data = editbox.get(1.0, END)
    try:
        fobj_w = open(filename, 'w')
        fobj_w.writelines(save_data.encode('utf-8')) # 感谢OSC-骠骑将军 指教
        fobj_w.close()
        tkMessageBox.showinfo(title='提示',
                message='保存成功')
    except IOError, errmsg:
        tkMessageBox.showwarning(title='保存失败', message='保存出错    ')
        tkMessageBox.showwarning(title='错误信息', message=errmsg)
    except NameError:
        tkMessageBox.showwarning(title='保存失败', message='未打开文件')
def showlinenum():
    tkMessageBox.showinfo(title='提示',
            message='这个功能作者现在不会写,放这里装饰用的.')
def destroy_ui(ui):
    ui.destroy()

def aboutauthor():
    author_ui = Toplevel()
    author_ui.title('关于')
    author_ui.geometry('200x80')
    about_string = Label(author_ui,
            text="作者: ToughGuy\n\n主页: http://www.techzhai.net/")
    confirmbtn = Button(author_ui, text='确定',
            command=lambda:destroy_ui(author_ui))
    about_string.pack()
    confirmbtn.pack()
        # author_ui.mainloop()
#创建框架
def CreateMenus():
    # 初始化菜单
    Menubar = Menu(root)

    # 创建文件菜单
    filemenu = Menu(Menubar, tearoff=0)
    filemenu.add_command(label='打开文件', command=openfile)
    filemenu.add_command(label='保存文件', command=savefile)
    filemenu.add_command(label='退出', command=lambda:destroy_ui(root))
    Menubar.add_cascade(label='文件', menu=filemenu)

    # 创建编辑菜单
    editmenu = Menu(Menubar, tearoff=0)
    editmenu.add_command(label='显示行号', command=showlinenum)
    Menubar.add_cascade(label='编辑', menu=editmenu)

    # 创建帮助菜单
    helpmenu = Menu(Menubar, tearoff=0)
    helpmenu.add_command(label='关于作者', command=aboutauthor)
    Menubar.add_cascade(label='帮助', menu=helpmenu)
    root.config(menu=Menubar)

root = Tk()
root.title('文本编辑器')
root.geometry('500x400')
CreateMenus()
#创建编辑区域
editbox = Text(root, width=70, height=25, bg='white')
editbox.pack(side=TOP, fill=X)
root.mainloop()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值