《笨方法学Python》加分题16

基础部分

 # 载入 sys.argv 模块,以获取脚本运行参数。
from sys import argv # 将 argv 解包,并将脚本名赋值给变量 script ;将参数赋值给变量 filename。
script, filename = argv # 询问是否继续编辑文件 filename
print(f"We're going to erase {filename}.")
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.") # 等待用户输入是否继续编辑
input("?") # 如果用户未输入 ctrl-c 则会继续执行
print("Opening the file...") # 打开文件对象写入覆盖内容
target = open(filename, 'w') # 没有指定 truncate() 的大小,所以实际上删除了文件的内容
print("Truncating the file. Goodbye!")
target.truncate() print("Now I'm going to ask you for three lines.") # 获取三个 input 变量的内容
line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ") # 将内容写入文件(只在内存中,并未写入硬盘)
print("I'm going to write these to the file.") target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n") # 关闭文件,将文件写入硬盘
print("And finally, we close it.")
target.close()

运行结果

《笨方法学Python》加分题16

加分习题

①如果你觉得自己没有弄懂的话,用我们的老办法,在每一行之前加上注解,为自己理清思路。就算不能理清思路,你也可以知道自己究竟具体哪里没弄明白。

②写一个和上一个练习类似的脚本,使用 read 和 argv 读取你刚才新建的文件。

 from sys import argv

 script, filename = argv

 txt = open(filename)

 print(txt.read())

输出结果

《笨方法学Python》加分题16

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”模式并不冲突,也并非后置条件

上一篇:hdu 5090 数列贪心加成1~n


下一篇:SpringMVC+Hibernate 使用 session.update(obj) 未更新的问题