零基础29讲课后题
0. def file_write(file_name):f = open(file_name, 'w')
print('请输入内容【单独输入\':w\'保存退出】:')
while True:
write_some = input()
if write_some != ':w':
f.write('%s\n' % write_some)
else:
break
f.close()
file_name = input('请输入文件名:')
file_write(file_name)
大佬们,第8行 ‘\n’ 是为什么加呢,是为了在输入的时候让每一行结尾换行吗
1. def file_compare(file1, file2):
f1 = open(file1)
f2 = open(file2)
count = 0 # 统计行数
differ = [] # 统计不一样的数量
for line1 in f1:
line2 = f2.readline()
count += 1
if line1 != line2:
differ.append(count)
f1.close()
f2.close()
return differ
file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')
differ = file_compare(file1, file2)
if len(differ) == 0:
print('两个文件完全一样!')
else:
print('两个文件共有【%d】处不同:' % len(differ))
for each in differ:
print('第 %d 行不一样' % each)
这里的line1是一行一行遍历的吗?一般情况下不应该是一个一个过吗
3. for i in range(begin):# 用于移动文件指针到我们设定的那一行,也就是消耗掉前面不需要的行数
f.readline()
这里移动指针时,按行移动用readline,按范围移动用seek吗 本帖最后由 sunrise085 于 2020-8-6 22:09 编辑
你对这三个问题的理解都是对的
0.向文件写内容的时候,不会自动添加换行符,所以需要在自己需要的位置添加'\n'
for line1 in f1:
1.这种写法就是一行一行的遍历,不是一个字符一个字符的遍历
3.seek一般只用于移动光标到文件起始位置或者文件末尾。很少用于中间移动,因为不同的文件编码不同,按照字节移动很容易出错。 1. 是因为如果不换行,添加到文件的内容就会成一排文字,看着比较难受
2. line1 是一行一行遍历,不是一个字符一个字符地遍历。这是文件对象的规定,暂时只要知道这个就行了
3. 也可以这么理解
大佬们,第8行 ‘\n’ 是为什么加呢,是为了在输入的时候让每一行结尾换行吗?
是的,在写入文件中换行,否则你写入的文件内容都会在一行,而不会换行
这里的line1是一行一行遍历的吗?一般情况下不应该是一个一个过吗?
嗯,这里通过一起比较行即可比较出不的数量,而且你要知道 for 循环一个文件对象时候是按行读取文件对象的内容的
所以这里一个通过 for 循环每次读取一行,一个是在for 循环内每次读取一行
则两个的行数都是一起增加的,所以读取的行数也是相同的,你读取到第三行,我也一样读取到第三行
3. for i in range(begin):# 用于移动文件指针到我们设定的那一行,也就是消耗掉前面不需要的行数
f.readline()
这里移动指针时,按行移动用readline,按范围移动用seek吗
你这里应该指的是读取指定行那题课后题,当你读取文件内容时候,文件指针就会进行移动,这里用 for 循环配合 f.readline() 函数将前面几行先读取掉
那么文件指针就移动到你 begin 的那行开头了,所以这里 readline 起到了按行移动文件指针的作用
实际上 for 直接循环文件对象也可以直接移动文件指针而且也是按行的,而 seek 是准确来说是按照字节来移动的哈~
页:
[1]