文件概念
文件的操作
这个定位是指定位到文件的那一部分
#1. 打开文件
f = open('a.txt','r') #相当于给文件开了一条管道,或者说接受返回的文件对象
#2. 进行操作
content = f.read()
print(content)
#3. 关闭文件
f.close()
# 1. 打开文件
f = open('a.txt','w') #相当于给文件开了一条管道,或者说接受返回的文件对象
# 2. 进行操作
f.write('nihao')
# 3. 关闭文件
f.close()
# 1. 打开文件
f = open('a.txt','a') #相当于给文件开了一条管道,或者说接受返回的文件对象
# 2. 进行操作
f.write('123')
# 3. 关闭文件
f.close()
案例:对图片进行操作
# 1. 打开一张图片,取出内容,获取内容的前半部分
# 1.1 打开文件
f = open('1.png','rb')
# 1.2 读取文件内容
content = f.read()
print(content)
# 1.3 关闭文件
f.close()
# 2. 打开另一个图片,再把取出的前半部分,写入第二个图片中
# 2.1 打开目标文件
f1 = open('2.png','wb')
# 2.2 写入操作
content1 = content[0:len(content) //2]
f1.write(content1)
# 2.3 关闭文件
f1.close()
从图片结果看,第二张图片是第一张图片的一部分
r+是既可以读,又可以写的;如果在r+模式先写了两个操作,既有读又有写的操作,读在写前面的话,先读,指针到了最后,写的时候会把内容写在最后面。
文件的定位
f = open('1.txt','r')
print(f.tell())
f.seek(2)
print(f.tell())
print(f.read())
print(f.tell())
f.close()
文件的读操作
f = open('1.txt','r')
result = f.readline()
print(result)
result1 = f.readline()
print(result1)
f.close()
这里我们看到每一次输出后下面都有一个空行,这是print函数导致的,我们在print函数后面用end的空字符结尾,不让他换行就可以解决
f = open('1.txt','r')
result = f.readline()
print(result,end='')
result1 = f.readline()
print(result1,end='')
f.close()
f = open('1.txt','r')
content = f.readlines()
print(content)
f.close()
文件的遍历操作
import collections
f = open('1.txt','r')
print(isinstance(f,collections.Iterator)) #判断是不是可迭代的
for i in f:
print(i,end='')
f.close()
f = open('1.txt','r')
content = f.readlines()
for i in content:
print(i,end='')
f.close()
f = open('1.txt','w')
if f.readable():
content = f.readlines()
for i in content:
print(i,end='')
f.close()
文件的写入操作
f = open('1.txt','a')
if f.writable():
print(f.write('abc'))
f.close()
文件的关闭操作
文件的相关操作
要先导入os模块
os.rename(’原来的文件名’,‘现在的文件名’)
os.renames(和上面一样,只不过如果现在的文件不存在会自动创建)一层一层需修改,多级的进行修改
为什么开头要加os模块呢,因为你当前位置不在文件夹呢,想要操作文件夹内的文件就要切换到当前模块下来进行复制操作
import os
os.chdir('file')
#文件的案例,实现文件的复制
# 1. 打开源文件和新文件,源文件可以是只读,新文件可以是追加
source_file = open('1.txt','r')
dis_file = open('1_bat.txt','a')
# 2. 从源文件中读取内容,放入目标文件中
content = source_file.read()
dis_file.write(content)
source_file.close()
dis_file.close()
当进行大文件复制的时候,可以一行一行进行复制,下面对一行一行进行复制的时候,要加个循环和判断,对于要复制的内容为0的时候就结束循环
# 1. 获取所有的文件名称列表
import os
import shutil
os.chdir('file') #切换到file目录下
file_list = os.listdir('./')
# print(file_list) #列表的形式
# 2. 遍历所有的文件名称
for file_name in file_list:
# print(file_name)
# 3. 分解文件的后缀名(尤其是最后一个.,比如这种的aa.xx.txt)
index = file_name.rfind('.')
# 根据这个索引,从当前位置开始取后面的后缀名
extension = file_name[index+1:] #切片处理取后缀
print(extension)
# 查看一下,是否存在同名的目录
# 如果不存在,直接创建一个目录
if not os.path.exists(extension):
os.mkdir(extension)
shutil.move(file_name,extension)