《笨方法学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()
运行结果

加分习题
①如果你觉得自己没有弄懂的话,用我们的老办法,在每一行之前加上注解,为自己理清思路。就算不能理清思路,你也可以知道自己究竟具体哪里没弄明白。
②写一个和上一个练习类似的脚本,使用 read 和 argv 读取你刚才新建的文件。
from sys import argv script, filename = argv txt = open(filename) 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”模式并不冲突,也并非后置条件
《笨方法学Python》加分题16的更多相关文章
- "笨方法学python"
<笨方法学python>.感觉里面的方法还可以.新手可以看看... 本书可以:教会你编程新手三种最重要的技能:读和写.注重细节.发现不同.
- 笨方法学python 22,前期知识点总结
对笨方法学python,前22讲自己的模糊的单词.函数进行梳理总结如下: 单词.函数 含义 print() 打印内容到屏幕 IDLE 是一个纯Python下自带的简洁的集成开发环境 variable ...
- 笨办法学python 13题:pycharm 运行
笨办法学python 13题 代码: # -*- coding: utf-8 -*- from sys import argv # argv--argument variable 参数变量 scrip ...
- 《笨方法学Python》加分题17
题目通过前学习的文件操作把一个文件中的内容拷贝到另一个文件中,并使用 os.path.exists 在拷贝前判断被拷贝的文件是否已经存在,之后由用户判断是否继续完成拷贝. 新知识os.path.exi ...
- 《笨方法学Python》加分题20
加分练习通读脚本,在每一行之前加注解,以理解脚本里发生的事情.每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量,在每次调用时,打印出 current_line ...
- 《笨方法学Python》加分题15
本题本题开始涉及文件的操作,文件操作是一件危险的事情,需要仔细细心否则可能导致重要的文件损坏. 本题除了 ex15.py 这个脚本以外,还需要一个用来读取的文件 ex15_sample.txt 其内容 ...
- 《笨方法学Python》加分题33
while-leep 和我们接触过的 for-loop 类似,它们都会判断一个布尔表达式的真伪.也和 for 循环一样我们需要注意缩进,后续的练习会偏重这方面的练习.不同点在于 while 循环在执行 ...
- 《笨方法学Python》加分题29
加分练习猜一猜 “if 语句” 是什么,他有什么作用.在做下一道题之前,试着用自己的话回答下面的问题: 你认为 if 对他下一行代码做了什么?为什么 if 语句的下一行需要 4 个空格缩进?如果不缩进 ...
- 《笨方法学Python》加分题28
#!usr/bin/python # -*-coding:utf-8-*- True and True print ("True") False and True print (& ...
随机推荐
- 获取物理内存total值和used值
1.使用 free -m 查看 2.物理内存total值 # free -m | grep Mem | awk '{print $2}' 3.物理内存used值 # free -m | grep Me ...
- RDD的概念与创建
1.RDD是整个Spark的计算基石.是分布式数据的抽象,为用户屏蔽了底层复杂的计算和映射环境 RDD是不可变的,如果需要在一个RDD上进行转换操作,则会生成一个新的RDD RDD是分区的,RDD里面 ...
- hadoop的环境变量
# hadoop && yarn export HADOOP_PREFIX=/home/ochadoop/apps/hadoop export HADOOP_HOME=${HADOOP ...
- 深入理解Java虚拟机读书笔记9----线程完全与锁优化
九 线程完全与锁优化 1 Java语言中的线程完全 ---线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用 ...
- C# ADO.NET中设置Like模糊查询的参数
ADO.NET进行参数化时会自动将参数值包含在单引号中,除了特殊需求,最好不要自己手动添加单引号.ADO.NET中识别参数标识是使用符号@,如果在SQL语句中将参数标识放在单引号中,单引号中的参数标识 ...
- [python]global与nonlocal关键字
在Python中,当引用一个变量的时候,对这个变量的搜索是按找本地作用域(Local).嵌套作用域(Enclosing function locals).全局作用域(Global).内置作用域(bui ...
- Tomcat源码分析 -- Tomcat整体架构
引用链接:https://blog.csdn.net/w1992wishes/article/details/79242797
- python视频学习笔记2(if)
一.if语句1.比较运算符,if语句语法 # 1. 输入用户年龄# 2. 判断是否满 18 岁 (**>=**)# 3. 如果满 18 岁,允许进网吧嗨皮# 4. 如果未满 18 岁,提示回家写 ...
- nginx warn an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/ while reading upstream
最近管理的nginx发现大量的error log,log内容如下: an upstream response is buffered to a temporary file /var/cache/ng ...
- 给C#Control组件统一增加加属性
http://www.cnblogs.com/SharkXu/archive/2006/08/24/EnterGoto.html