《笨方法学Python》加分题16
基础部分
1 # 载入 sys.argv 模块,以获取脚本运行参数。 2 from sys import argv 3 4 # 将 argv 解包,并将脚本名赋值给变量 script ;将参数赋值给变量 filename。 5 script, filename = argv 6 7 # 询问是否继续编辑文件 filename 8 print(f"We're going to erase {filename}.") 9 print("If you don't want that, hit CTRL-C (^C).") 10 print("If you do want that, hit RETURN.") 11 12 # 等待用户输入是否继续编辑 13 input("?") 14 15 # 如果用户未输入 ctrl-c 则会继续执行 16 print("Opening the file...") 17 18 # 打开文件对象写入覆盖内容 19 target = open(filename, 'w') 20 21 # 没有指定 truncate() 的大小,所以实际上删除了文件的内容 22 print("Truncating the file. Goodbye!") 23 target.truncate() 24 25 print("Now I'm going to ask you for three lines.") 26 27 # 获取三个 input 变量的内容 28 line1 = input("line 1: ") 29 line2 = input("line 2: ") 30 line3 = input("line 3: ") 31 32 # 将内容写入文件(只在内存中,并未写入硬盘) 33 print("I'm going to write these to the file.") 34 35 target.write(line1) 36 target.write("\n") 37 target.write(line2) 38 target.write("\n") 39 target.write(line3) 40 target.write("\n") 41 42 # 关闭文件,将文件写入硬盘 43 print("And finally, we close it.") 44 target.close()
运行结果
加分习题
①如果你觉得自己没有弄懂的话,用我们的老办法,在每一行之前加上注解,为自己理清思路。就算不能理清思路,你也可以知道自己究竟具体哪里没弄明白。
②写一个和上一个练习类似的脚本,使用 read 和 argv 读取你刚才新建的文件。
1 from sys import argv 2 3 script, filename = argv 4 5 txt = open(filename) 6 7 print(txt.read())
输出结果
16.3 优化脚本
target.write('\n' + line1 + '\n' + line2 + '\n' + line3)
如果需要加上格式化字符,可以这样写
1 旧%格式串:
2 target.write('%s\n%s\n%s\n' %(line1,line2,line3))
3
4 新format()格式串:
5 target.write('{}\n{}\n{}\n'.format(line1,line2,line3))
16.4 open 为什么多了一个 w
参数
open()
的默认参数是 open(file, 'r')
也就是读取文本的模式,默认参数可以不用填写。而本题练习是写入文件,因此不适应使用 r
参数,需要指定写入模式,因此需要增加 w
参数。
16.4 如果你用 'w' 模式打开文件,那么你是不是还要 target.truncate() 呢?阅读以下 Python 的 open 函数的文档找找答案。
target.truncate() 是清空的意思,与“w”模式并不冲突,也并非后置条件
posted on 2018-11-30 15:58 阿加西的python之旅 阅读(551) 评论(0) 编辑 收藏 举报