============= CH28 homework ============

0 下边只有一种方式不能打开文件, 请问是哪一种, 为什么?

f = open('E:/test.txt', 'w')  # A
f = open('E:\test.txt', 'w')  # B
f = open('E://test.txt', 'w') # C
f = open('E:\\test.txt', 'w') # D

Answer: B 由于’\’无法识别

1 打开一个文件我们使用open()函数, 通过设置文件的打开模式, 决定打开的文件具有哪些性质, 请问默认的打开模式是什么呢?

Answer: f = open(”, ‘rt’)

2 请问 >>>open(‘E:\Test.bin’, ‘xb’)是以什么样的模式打开文件的?

Answer: 可写入的二进制模式
‘x’ 如果文件已经存在,使用此模式打开将会引发异常
‘b’ 以二进制模式打开文件

3 尽管Python有所谓的垃圾回收机制, 但对于打开了的文件, 再不需要用到的时候我们仍然需要使用f.close()将文件对象关闭, 这是为什么呢?

Answer: 资源被占用, 内存被占用。如果不close(), 那就要等到垃圾回收时, 自动释放资源.垃圾回收的时机是不确定的, 也无法控制的.
垃圾收集机制, 会在文件对象的引用计数降至0时自动关闭文件, 所以在Python的编程里, 如果忘记关闭文件并不会造成内存泄露那么危险。 但是如果你对文件进行了写入操作, 那么你应该在完成后关闭文件。因为Python可能会缓存你写入的数据, 如果断电那就会丢失数据。

4 如何将一个文件对象(f)中的数据存放在列表中?

Answer:

# 如果是单行
list(open('xx', 'r'))
# 如果是多行
f = open('xx')
list1 = []
for each in f:if each != '\n':list1.append(each)else:continue

5 如何迭代打印文件对象(f)中的每一行数据?

Answer:

f = open('xx.txt')
list1 = []
for each in f:if each != '\n':list1.append(each)else:continue

6 文件对象的内置方法 f.read([size = -1]) 作用是读取文件对象内容, size参数是可选的, 那如果设置了size = 10, f.read(10), 将返回什么内容呢?

Answer: 返回f从文件指针开始的连续10个’字符’

7 如何获取文件对象(f)当前文件指针位置?

Answer: f.tell()

8 还是视频中的那个掩饰文件(record.txt), 请问为何f.seek(45, 0)不会出错,但f.seek(46)就出错了呢?

>>>f.seek(46)
46
>>>f.readline()
Traceback (most recent call last):File "<pyshell#18>", line 1, in <module>f.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xe3 in position 4: illegal multibyte sequence

Answer: 因为使用f.seek()定位的文件指针是按字节为单位进行计算的, 演示文件(record.txt)是以GBK进行编码的, 按照规则一个汉字需要占用两个字节, f.seek(45)的位置位于字符”小”的开始位置, 因此可以正常打印, 而 f.seek(46)的位置刚好位于字符”小”的中间位置, 因此按照GBK编码的形式无法将其解码。


Practice

0 尝试将文件(CCTV.mp3)打印到屏幕上?

# 这里自己用网易云下载的一首歌,然后打开就是一堆码
f = open('D:\\Learn\\Python project\\CH28 homework\\CCTV.mp3','rb')
for each in f:print(each, end = ' ')
f.close()

1 编写代码,将上一题中的文件(CCTV.MP3), 保存为新文件(CCTV.txt)

# Test 1~20
f1 = open('D:\\Learn\\Python project\\CH28 homework\\CCTV.mp3','rb')
f2 = open('D:\\Learn\\Python project\\CH28 homework\\CCTV.txt','x')
f2.write(str(f.read(20)))
f2.close()
f1.close()

零基础学习Python 作业 第28章相关推荐

  1. 零基础学习Python 作业 第22章

    x**============ CH22 homework ============** 0 递归在编程的形式上是如何表现的呢? Answer: 函数本身不断迭代调用自身 1 递归必须满足哪两个基本条 ...

  2. 零基础学习Python 作业 第14章

    ==========CH14 homework========== 0 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)? Answer: '\', '()', "' cod ...

  3. Python001 【零基础学习Python】前言及第1/2章

    摘自[零基础学习Python]一书 小甲鱼编著 敲黑板 划重点啦:理解为主,应用为王 前言 其实很早之前就接触到了Python,只是当时自己并未太多关注.真的是很早很早之前啦.就在[Java编程思想] ...

  4. python基础代码事例-零基础学习Python开发练习100题实例(2)

    零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...

  5. python教学视频k_GitHub - y000k/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

  6. python入门教材论坛_Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare ============= *Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐* ------------------------ 本文 ...

  7. python入门教材论坛_GitHub - aisuhua/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

  8. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

  9. python零基础自学英语软件下载_GitHub - geniux-TI/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

最新文章

  1. 网站社区类产品管理经验
  2. Undefined、Null区别渗透
  3. mysql错误:this authentication plugin is not supported
  4. ECMAScript 6入门 - 变量的解构赋值
  5. ES6学习笔记(二十二)ArrayBuffer
  6. IOT(7)---物联网平台架构设计
  7. python入门经典100例-Python3经典100例(Python3入门习题) 含答案 doc版
  8. php怎么重命名文件,phpstorm如何进行文件或者文件夹重命名
  9. Atitit 常见每日流程日程日常工作.docx v7 r8f
  10. Python functools模块之cmp_to_key
  11. 2021年《初级会计实务》考试真题资产部分
  12. 卡尔曼滤波原理介绍及算法实现
  13. 计算机网络中数据传输速率的单位是什么,计算机网络中传输介质传输速率的单位是用什么表示...
  14. 奋斗吧,程序员——第八章 衣带渐宽终不悔,为伊消得人憔悴
  15. java 逃逸_Java 逃逸分析
  16. 有道智选-网易效果推广
  17. 在群晖上搭建基于 PostgreSQL 的 Joplin Server
  18. 计算机术语dump是什么意思?
  19. 基于egret的小游戏——拼图
  20. mac设计师系列 Adobe “全家桶” 15款设计软件 值得收藏!

热门文章

  1. 如何查看浏览器已经记录的密码
  2. Jackson对泛型的序列化和反序列化方法汇总
  3. supercharge快充_华为Mate 10超级快充SuperCharge那些事儿
  4. php有意思的小项目,推荐6个Github上超有意思的前端项目!
  5. JS:二分搜索(3)—— 子序列、信封嵌套、阶乘数的0
  6. 基础概念之电路板的概念
  7. C++ 模板特化与偏特化
  8. python 学术文献下载_PyHubWeekly | 第二十六期:一款开源免费的学术论文下载工具...
  9. 推荐10个AI人工智能技术网站
  10. 《人工智能》之《机器学习》