鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] 第053讲:永久存储(上)| 课后测试题及答案

  [复制链接]
发表于 2023-11-30 22:00:25 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-1 11:01:13 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-1 17:45:27 | 显示全部楼层
本帖最后由 萧随风 于 2023-12-4 14:13 编辑

0.
要看open()使用是'w'还是'r',r会报错,w不会
1.
有。使用flush()方法
2.
从文件对象中读取一行字符串(包括换行符),如果指定了 size =3参数,则表示读取 3个字符
3.
1行
4.
当 for 语句作用于文件对象时,是按行进行迭代的,也就是将文件中的每一行内容读取到 each 变量中,这样理论上打印出来应该是两行,而非三行。j.zq>k
0]=&RW}P3I-8$by{r`75JFtd
但结果为什么会有三行呢?来自:https://fishc.com.cn
gf0kH#z;v(XACs?>3,yKOY
因为 print() 函数默认是会在末尾添加一个换行符,print( , end='')
5.
有转义字符\,改成r"xx\xx\xx"
6.
是否已经存在一个重名的文件
7.
可以
8.
负责指定文件的当前位置。
9.
End Of File的缩写,在操作系统中表示资料源无更多的资料可读取
10.
f.tell()
动动手
0.
f1 = open("FishC.txt",'r')
f2 = open("FishD.txt",'w')
f1.seek(10)
f2.write(f1.read(5))
f1.close()
f2.close()

1.
f = open("FishC.txt","r+")
f.tell()
f.truncate(15)
f.close()

2.
f = open("open_myself.py","w")
f.write("I love Python.")
f.writelines(["But it donot like me.\n","I will try mybest!"])
f.close()
f = open("open_myself.py","r+")
for each in f:
    print(each)

3.
f1 = open("test.jpg","ab")
f2 = open("target.zip","rb")

f1.write(f2.read())

f1.close()
f2.close()

print("完成!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-5 16:48:00 | 显示全部楼层
0,不会,python会自己新建一个这样的文件
1,使用flush方法
2,读取三个字节
3,3行
4,因为把换行符也打印出为一行了
5,文件被占用
6,小心文件占用问题
7,可以
8,读取文件
9,end of the file
10,使用tell

0,
1,f.truncate(15)
2,f = open("E:\Mypython\open_myself.py","r")
print(f.read())
3,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 12:16:00 | 显示全部楼层
0、不会,会创建一个新文件
1、flush()
2、读取的字符长度为3。如果是一行数小于3,就只读一行
3、FishAFishBFishC
4、因为有\n
5、
6、会把原文件的内容清空
7、可以
8、指定读取内容的位置
9、
10、用tell()方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 15:17:08 | 显示全部楼层
创建
flush()
3个字符
1

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-7 13:38:20 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-7 20:25:06 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-8 15:38:47 | 显示全部楼层
如果有第二个参数的话,应该会再创建一个吧
。。。
。。。
1行,因为你没有\n
在for语句读取时\n单独读取了?
应该在每个\前再加一个\
close()保存
可以吧
指示读取到的位置?
。。。
tell()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-10 03:09:08 | 显示全部楼层
no
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-10 08:52:40 | 显示全部楼层
0:读模式打开报错,写模式打开自动新建
1:f.flush()
2. 读取size个字符
3. 一行,writelines不会自动添加换行符
4. 因为第一行数据里面有一个换行符了,加上print的换行,就是两行
5. 文件地址需要转义,或者使用原始字符串
6. 是否确认清空覆盖文件
7. 可以
8. 绑定文件进行操作
9. 文件末尾
10. f.tell()

动手0:
f = open('FishC.txt', 'r')
for each in f:
    print(each)
f.seek(10)
f1 = open('FishD.txt', 'w')
f1.write(f.read(6))
f1.close()
f.close()

1:
f = open('FishC.txt', 'r')
text = f.read(15)
f.close()
with open('FishC.txt', 'w') as f:
    f.write(text)

2:
import os
current_file = os.path.realpath(__file__)
print(current_file)
with open(current_file, 'r') as f:
    for each in f:
        print(each, end='')

3.
with open('test.jpg', 'ab') as f_target:
    with open('target.zip', 'rb') as f_source:
        for each in f_source:
            f_target.write(each)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-11 16:30:09 | 显示全部楼层
ctrl+s
读取3个字符串
3行
将换行符自动遍历了?
不知道
如果文件已经存在,则先截断清空文件
不可以
EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读
f.tell()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-11 18:07:56 | 显示全部楼层
答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-11 18:08:49 | 显示全部楼层
本帖最后由 Hazalea 于 2023-12-11 18:22 编辑

问答题:
0. 如果尝试使用 open() 函数打开一个不存在的文件,是否会报错?
不会

1. “在打开一个文件对象之后,大多数的文件操作都是在缓冲区里面进行的。因此,如果希望将文件内容保存,我们需要使用 close() 方法关闭文件对象,这样数据才能从缓冲区写入到文件中。”,那么请问大家,有没有办法在不关闭文件对象的情况下,进行内容的保存呢?)
有,执行flush()

2. 请问如果指定 readline(size=-1) 方法的 size 参数为 3,那么表示的含义是什么?
表示读取的字符数

3. 请问下面代码会在文件中写入几行字符串呢?
一行

4. 请问在课堂中的代码,为什么我们写入的时候只有一个换行符,但是使用 for 语句读取并打印出来却多了一个空白行呢?
因为写入的是一个list,for循环再执行完第一个值后自动会换行

5. 请问下面代码为什么会报错?
python中反斜杠会被识别为转义字符,应该用正斜杠

6. 使用 "w" 模式打开文件之前一定要注意什么?
原本的文件中是否有内容,如果有内容,则会清空原本文件中的内容

7. 如果一个文件不存在,是否可以使用 "a" 模式将其打开?
不可以

8. 文件指针的作用是什么?
指定当前写入值的位置

9. 什么是 EOF?
文件中,内容的最末尾

10. 如何知道文件指针当前指定的位置?
可以使用tell()


动动手:
0. 请下载文件(  FishC.txt (25 Bytes, 下载次数: 660) ),编写代码,截取其中第 10~15 个字符,并保存为新文件(FishD.txt)。
f1=open("C:/Users/leafl/Desktop/FishC.txt","r+")
f1.seek(10)
f2=open("C:/Users/leafl/Desktop/FishD.txt","w")
f2.write(f1.read(5))
f1.close()
f2.close()

1. 还是上一题的那个文件(FishC.txt),这次请编写代码,截取前面 15 个字符,并保存覆盖保存原文件。
f=open("C:/Users/leafl/Desktop/FishC.txt","r+")
f.truncate(5)
f.close()

2. 请编写一个源代码(open_myself.py),它的功能就是打开自己的源文件,然后打印出来。
f=open("C:/Users/leafl/Desktop/test.txt","w")
for each in f:
        print(each,end='')
f.close()

3. 在图片中隐藏文件(又叫图片隐写术)的原理及实现。
f1=("C:/Users/leafl/Desktop/hw/test.jpg","ab")
f2=("C:/Users/leafl/Desktop/hw/target.zip","rb")
f1.write(f2.read())
f1.close()
f2.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-12 14:18:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-12 17:50:43 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 21:32:41 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 21:55:22 | 显示全部楼层
0.会创建一个新的文件
1..flush
2.由一次读取所有行变成一次读取3行
3.1行
4.
5.有反斜杠,变成了转义字符
6.文件内容会被清空
7.可以
8.指示已经被读取的数据
9.文件的末尾
10.tell方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-14 06:28:06 | 显示全部楼层
问答题:
0.  不会,会创建一个新的文件
1.  可以使用flush()方法在不关闭文件的情况下写入到文件
2.  表示读取3个字符
3.  一行,writelines()方法不带换行功能,需要手动添加换行符
4.  因为print()函数是带换行功能的,换行符也作为一个元素迭代了
5.  \是转义字符
6.  注意文件是否存在并有内容,否则会被截断清空
7.  不可以
8.  文件指针是指定文件操作时候的定位
9.  EOF就是end of the file,文件末尾的意思
10.  可以用 f.tell() 方法返回当前文件指针的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-14 16:48:13 | 显示全部楼层
053
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-12 19:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表