#文件访问模式:r只读(文件不存在会崩溃),
#w只写,a追加,rb以二进制读取,wb以二进制方式写入文件,ab以二进制方式追加文件。
file = open("1","r")
content = file.read()
print(content)
file.close()
建立txt文本,命名为1,内容如下:
abc小白
snnnnndd
ashudisln
文件的不同操作:read()读取全部,readline(),readlines()
#读取第i个字符以后的内容
file = open("1","rb")
#设置指针为3
file.seek(3)
#查看指针所在位置用tell
# tell函数返回文件当前位置,即文件指针当前位置,初始指针为0。
result = file.tell()
print(result)
file_data = file.read()
print(file_data)
file.close()
3
b'\xe5\xb0\x8f\xe7\x99\xbd\r\nsnnnnndd\r\nashudisln'
注:(1)当读取完整个文件,指针走到最后。
(2)输出以b开头表示使用二进制,n’表示换行。
(3)使用完文件后需使用close关闭文件。
readline()读取一行后指针走到第二行,若重新读取整个文件需设置指针。
readlines()文件中的数据按每行读取,把每行的数据放到一个列表
file = open("1","rb")
file_data1 = file.readline()
print(file_data1)
print(file.tell())
file.seek(0)
file_data1 = file.readlines()
print(file_data1)
file.close()
#解码
file = open("1","rb")
file_data = file.readlines()
for data in file_data:
print(data.decode("utf-8"))
b'abc\xe5\xb0\x8f\xe7\x99\xbd\r\n'
11
[b'abc\xe5\xb0\x8f\xe7\x99\xbd\r\n', b'snnnnndd\r\n', b'ashudisln']
abc小白
snnnnndd
ashudisln
模拟文件的拷贝
#打开源文件读取数据
file = open("1","rb")
#读取
file_data = file.read()
#打开文件,写入数据(open可自动创建新文件)
new_file = open("2.txt","wb")
new_file.write(file_data)
#close
file.close()
new_file.close()
注:此种读取方式若文件较大会占用较多内存,改进如下:
file = open("1","rb")
#指定写入路径
new_file = open("3","wb")
#读取
while True:
file_data = file.read(1024)
#判断是否读取完毕
if file_data:
new_file.write(file_data)
else:
print("读取完毕")
break
file.close()
new_file.close()
文件和文件夹的相关操作
#更改文件名字引入OS模块
#os.rename("旧文件名”,“新文件名”)
import os
os.rename("1","1.txt")
#创建文件夹
os.mkdir("A")
#创建A中的文件
file = open("A/5.txt","wb")
#删除文件
os.remove("1.txt")
#删除文件夹:当文件夹中有文件时,使用os删除会报错
#删除带有文件的文件夹使用shutil模块
import shutil
shutil.rmtree("A")