文件的使用

一:文件类型

文件展现形态有文本文件二进制文件两种;文本文件和二进制文件只是文件的展示方式;本质上,所有文件都是采用二进制的形式进行存储



1、文本文件
①、由单一特定编码组成的文件,如UTF-8编码。
②、由于存在编码,也被看成是存储着的长字符串。



2、二进制文件
①、直接由比特0和1组成,没有统一字符编码。
②、一般存在二进制0和1的组织结构,即文件格式。



文本数据在python中怎么存比较好 python 文本文件_文本数据在python中怎么存比较好

#文本文件形式,把要用到的文件放在和代码同一目录就行,当然也可以用绝对路径形式
test = open("demo.txt","rt",encoding='UTF-8')	#这里要用到utf-8编码	
print(test.readline())
test.close()

运行结果:重启重装版本升级大法好



#二进制形式
test = open("demo.txt","rb")
print(test.readline())
test.close()

运行结果:b'\xe9\x87\x8d\xe5\x90\xaf\xe9\x87\x8d\xe8\xa3\x85\xe7\x89\x88\xe6\x9c\xac\xe5\x8d\x87\xe7\xba\xa7\xe5\xa4\xa7\xe6\xb3\x95\xe5\xa5\xbd\r\n'
这么长一串也看不懂啊 -_-!



二、文件的打开和关闭

打开 -> 操作(占用状态)-> 关闭



1、打开模式



<变量名> = open (<文件名>, <打开模式>)



①、‘r’ 只读模式,默认值,如果文件不存在,返回FileNotFoundError。
②、‘w’ 覆盖写模式,文件不存在则创建,存在则完全覆盖。
③、‘x’ 创建写模式,文件不存在则创建,存在则返回FileExistsError。
④、‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容。
⑤、‘b’ 二进制文件模式。
⑥、’+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能。
⑦、‘t’ 文本文件模式,默认值。



2、文件关闭

<变量名>.close()



三、文件内容的读取
1、.read(size=-1) 读入全部内容,如果给出参数,读入前size长度。
test = open("demo.txt","rt",encoding="utf-8")
s = test.read(4)
print(s)
test.close()

运行结果:重启重装



2、.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度。
test = open("demo.txt","rt",encoding="utf-8")
s = test.readline()
print(s)
test.close()

运行结果:重启重装版本升级大法好



3、.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表 如果给出参数,读入前hint行。
test = open("demo.txt","rt",encoding="utf-8")
s = test.readlines()
print(s)
test.close()

运行结果:['重启重装版本升级大法好\n', '天不生红蔷\n', '先上DJ']



4、文件的全文本操作
①、遍历全文本;一次读入,统一处理。
demo = input("请输入要打开的文件名称:<demo.txt>")
test = open(demo,"r",encoding='utf-8')
s = test.read()
test.close()



②、遍历全文本;按数量读入,逐步处理。
demo = input("输入要打开的文件名称:")
test = open(demo,"r",encoding="utf-8")
s = test.read(2)
while s !="":
    s = test.read(2)
test.close()



5、文件的逐行操作
①、逐行遍历文件;一次读入,分行处理。
demo = input("请输入要打开的文件名称:<demo.txt>")
test = open(demo,"r",encoding='utf-8')
for line in test.readlines():
    print(line)
test.close()

运行结果:

重启重装版本升级大法好

天不生红蔷

先上DJ



②、逐行遍历文件;分行读入,逐行处理。
demo = input("请输入要打开的文件名称:<demo.txt>")
test = open(demo,"r",encoding='utf-8')
for line in test:
    print(line)
test.close()

运行结果:

重启重装版本升级大法好

天不生红蔷

先上DJ



四、数据文件的写入
1、.write(s) 向文件写入一个字符串或字节流
demo = input("请输入要打开的文件名:<demo1.txt>")
test = open(demo,"w+")
test.write("重启重装版本升级大法好")

运行结果:重启重装版本升级大法好



2、.writelines(lines) 将一个元素全为字符串的列表写入文件
demo = input("请输入要打开的文件名:<demo1.txt>")
test = open(demo,"w+")
ls = ["中国", "法国", "美国"]
test.writelines(ls)

for line in test:
    print(line)
test.close()

运行结果:这个时候并没有输出任何字符,原因是指针在文件的末尾



3、.seek(offset) 改变当前文件操作指针的位置,offset含义如下:0 – 文件开头; 1 – 当前位置; 2 – 文件结尾。
demo = input("请输入要打开的文件名:<demo1.txt>")
test = open(demo,"w+")
ls = ["中国", "法国", "美国"]
test.writelines(ls)
test.seek(0)		#当文件写完后,指针会指向文件的最后,调用seek(0)指向开头。
for line in test:
    print(line)
test.close()

运行结果:中国法国美国