0
点赞
收藏
分享

微信扫一扫

文本文档的读写

向上的萝卜白菜 2022-02-22 阅读 39

文本文档的读写

1.文件指针的获取

'''
读取文本文档(文件后缀名是.txt)中内容

读取文件的时候有一个文件指针的概念,默认文件指针在文件左上角,为0  tall获取文本指针


open方法第一个参数是需要读取的文本内容,第二个参数是打开文件的方式,
open方法开开文件操作完毕之后要调用close方法关闭

打开的文本方式:
    r:只读模式 默认其实就是只读模式,可以省略不写
'''

# 打开文件
f = open("1.txt", "r")

#输出文件指针
print(f.tell())

#读取五个字符
info = f.read(5)
print(info)

#输出文件指针
print(f.tell())


# 关闭文件
f.close()

2.移动文件指针

'''
移动文件指针
'''

# 打开文件
f = open("1.txt", "r")

#移动文件指针
f.seek(5)

#输出文件指针
print(f.tell())

#读取五个字符
info = f.read(5)
print(info)

#输出文件指针
print(f.tell())

# 关闭文件
f.close()
'''
seek有三种模式:
    默认值为0:表示从哪一个位置开始偏移,0代表从头开始算起
    1模式:代表从当前位置开始算起,
    2模式代表从文件末尾算起
        ps:seek如果采用0模式,这里打开文件方式不用改变,如果是1、2模式需要视同 rb
'''

# 打开文件
f = open("1.txt", "rb")

#输出文件指针
print(f.tell())

#读取五个字符
info = f.read(5)
print(info)

#输出文件指针
print(f.tell())

#第偏移量,第二个模式,
f.seek(1, 1)
print(f.tell())
print(f.read())

# 关闭文件
f.close()
'''
seek有三种模式:
    默认值为0:表示从哪一个位置开始偏移,0代表从头开始算起
    1模式:代表从当前位置开始算起,
    2模式代表从文件末尾算起
        ps:seek如果采用0模式,这里打开文件方式不用改变,如果是1、2模式需要视同 rb

    注意打开文件的方式现在是二进制了,字符编码所占的长度时不一样的
    如果使用gbk方式打开 汉字是两个字节占一个字
    如果使用utf-8,则是三个字节占一个字
'''

# 打开文件
f = open("1.txt", "rb")

# 只有20个字母,然后不是换行和回车总共加起来22 为了会读出来27
# 如果第一个参数有写的是正数 还是从左往右移动的,如果想倒着移动写负数
f.seek(-5, 2)
print(f.tell())

#上面倒着移动5个,在向后读取3个字符
print(f.read(3))
print(f.tell())

# 关闭文件
f.close()

3、read

'''
read() 如果指定个数,那么就是读取指定的数字
如果不指定,则是读取整个字符串中所有内容
PS:在Windows操作系统中 虽然只有一个换行其实包括两个操作是 回车+换行
'''

# 打开文件
f = open("1.txt", "r")

#读取五个字符
info = f.read()
print(info)

#输出文件指针
print(f.tell())

4、readlines

'''
read() 如果指定个数,那么就是读取指定的数字
如果不指定,则是读取整个字符串中所有内容
PS:在Windows操作系统中 虽然只有一个换行其实包括两个操作是 回车+换行
'''

# 打开文件
f = open("1.txt", "r")

#读取五个字符
# info = f.read()

'''
readlines()也是用来进行读取的,整体是一个列表 只不过读取回来每一个成了列表的一个元素,并且包含了换行符
['helloworld\n', 'hellowoniu\n', 'xiaowang\n', 'xiaoli']
'''
info = f.readlines()
print(info)

#输出文件指针
print(f.tell())

# 关闭文件
f.close()

5.模式

r+

# 给文件中写入内容
'''
常用打开模式:
r 只能读
r+ 可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容
w+ 可读可写,如果文件存在,则覆盖整个文件,不存在则创建
w 只能写,覆盖整个文件,不存在则创建
a 只能写,从文件底部添加内容 不存在则创建
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建

write只能写入单个文本
writelines 同时可以将一个列表中的内容写入
'''

# r+模式操作的必然是一个存在的文件,从左上角开始写,会覆盖掉文本内容
# r+模式之所以会覆盖,其实是打开文件的时候文件指针在文件的开头导致的覆盖
f = open('1.txt', 'r+')

print(f.tell())
# 移动文件指针
f.seek(22)

#写入内容
f.write("hahaha")

# names = ["xiaomign", 'xiaozhang', 'tongtong', 'honghong']
# f.writelines(names)

#关闭
f.close()

w模式

# w只能用于写入文件内容,不能用于读取
# 是将原文件中所有内容全部删除,然后再写入内容
f = open('1.txt', 'w')

#写入内容
f.write("hahaha")

#关闭
f.close()

W+

# w+ 可读可写,如果文件存在,则覆盖整个文件,不存在则创建

# 写入的时候,先删除,在写入其实w+就是拥有w的功能之外,增加了读取的功能
f = open('1.txt', 'w+')

#写入内容
f.write("hahaha")

f.seek(0)
#由于在写入的指针在移动,当写入完成hahaha后,在读取的时候,文件指针在末尾就读不出内容
print(f.read())

#关闭
f.close()

a

# a 只能写,从文件底部添加内容 不存在则创建

# a 末尾追加模式
f = open("1.txt", "a")

f.write("xiaoxiao")


f.close()

a+

# a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建
# 如果刚开始就写入的内容,则文件指针在文件末尾,如果要读取,则需要将文件指针启动
f = open("1.txt", "a+")

#写入内容
f.write("\nxiaoxiao")

#启动文件指针
f.seek(0)
#读取内容
print(f.readlines())

f.close()

6、with oepn

'''
with open是这个open的升级版,也是用于读取和写入文件的
相比较而言:
    with open 可以同时操作多个文档
    with open 会自动调用close方法,不需要我们手写
'''

#将1.txt中的内容读取回来,写入到2.txt
with open("1.txt","r") as f1,open("2.txt",'w') as f2:
    #读取出来f1中的内容
    f1_list = f1.readlines()

    #将读取的f1中内容写入到f2
    f2.writelines(f1_list)
举报

相关推荐

0 条评论