# __author__:Nzkalhbxx
# __date__:2017/10/16
import time
# 要想操作文件, 就必须创建一个文件对象, 通过操作文件对象对文件进行操作
# open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
# 创建一个可读文件对象, 读模式下只能操作读操作, 不能使用写操作, 写模式下类推
# 对文件的基本操作有三种: r(read)读操作/ w(write)写操作/ a(append)追加操作
# 文件的另外三种拓展操作: r+ (read&write), w+ (write&read), a+ (append&read)
# r+模式下可读可写, 但是写操作不再会清空数据, 而是在数据的末尾写入数据,无论当前文件指针指向哪里
# w+模式下可读可写, 操作之前依然会清空数据, 之后进行操作
# a+模式下可追加可读
"""
"""
fileReadObj = open("citys.txt", 'r', encoding="utf8")
fileReadObj2 = open("citys.txt", 'r', encoding="utf8")
fileAppendObj = open("citys.txt", 'a', encoding="utf8")
# 特别注意: 只要写文件的文件对象一经创建, 无论有无执行写操作, 都会对文件进行清空内容操作
# fileWriteObj = open("citys.txt", 'w', encoding="utf8")
print(type(fileReadObj))
print(type(fileReadObj2))
# print(type(fileWriteObj))
# 同一个文件可以被拥有多个句柄, 而每个句柄是不一样的, 文件可以同时进行读操作, 互不影响, 但不可以同一时刻进行写操作
print(fileReadObj.fileno())
print(fileReadObj2.fileno())
# print(fileWriteObj.fileno())
""" 由Demo1可以看出, 文件对象对文件的读操作是有指针指向的, 每次读操作完成时, 都会设置并记录当前文件对象读指针的指向,
下次再进行读操作时便会由上次读指针指向的位置开始读取数据, 注意: read()不加参数是默认一次性读完, 后续再读时,
指针已经指向文件末尾, 无法再获取数据了, 而写操作的原理是一样的, 每个写操作的文件对象都有一个写指针, 每写一次,
指针便自动向后移动, 后续再进行写操作时, 便从记录的写指针所在位置往后续写, 如果要进行写操作的文件不存在, Python会
创建一个同名的空文件, 然后进行操作, 对于a(append)追加操作, 以此类推"""
fileReadObj.read()
fileReadObj2.read()
maxNum = fileReadObj.tell() if fileReadObj.tell() > fileReadObj2.tell() else fileReadObj2.tell()
print(maxNum)
fileReadObj.seek(0)
fileReadObj2.seek(0)
num = 0
while num <= maxNum / 3: # Demo1
# 二者输出内容一致, 说明同一个文件同时可以有多个文件对象进行读操作, 互不影响
print(fileReadObj.read(1).strip())
print(fileReadObj2.read(1).strip())
num += 1
fileReadObj.close()
fileReadObj2.close()
fileAppendObj.close()
文件
运行结果部分截图
网友评论