遇到了一个关于文件指针操作位置的问题,再解决这个问题之前先记录一些基础知识。
write(str):如果要写入字符串以外的数据,先将他转换成字符串
tell():返回一个整数,表示当前文件指针的位置(距离文件头的字节数)
seek(偏移量,[起始位置]):移动文件指针
偏移量:单位为字节,可正可负
起始位置:0是文件头,默认值;1是当前位置;2是文件尾
关于Python中的文件指针
读取文件内容时,并不能重复的读取,解释一下各指令中文件指针的变化
read():读取文件中从文件指针当前位置开始,长度为size的文件内容。读取完成后文件指针移动到读取到的最后一个字节处。
write(str):从文件指针当前位置开始,向文件中写入str中的内容。如对应位置有内容则直接覆盖,写入完成之后文件指针指向写入字符串在文件中的对应位置【即跟在字符串屁股后边】
seek(偏移量,[起始位置]):用来移动文件指针。偏移量:单位为字节,可正可负。起始位置:0-文件头,默认值;1-当前位置;2-文件尾。
因此可以解释下列代码中为什么要加fo.seek(0)才能print出来 唐诗宋词元曲
'''向文件中写入列表'''
fname = input("please input target file:")
fo = open(fname,"w+")
ls = ["唐诗","宋词","元曲"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
print(line)
fo.close()