1.文件的打开或者创建
f = open('数据.txt', 'w', encoding='utf-8') # 只读方式打开文件
f. write('内容')
f. read(读的字符个数)
f = open('数据.txt', 'w', encoding='utf-8') # 只读方式打开文件
f. write('内容')
f. read(读的字符个数)
2.文件的信息
①查找操作的文件名
print(f. name)
①查找操作的文件名
print(f. name)
②访问权限
print(f. mode)
print(f. mode)
③编码格式
print(f. encoding) # cp936 -- jbk编码格式的存储位置:第936页
print(f. encoding) # cp936 -- jbk编码格式的存储位置:第936页
④是否可读
print(f. readable() )
print(f. readable() )
⑤是否可写
print(f. writable() )
print(f. writable() )
⑥是否关闭
print( f.closed)
print( f.closed)
3.文件的指针
seek(偏移量,whence) seek(5,0)
# 偏移量:距离whence值的字符数
# whence:位置:0:文件开头 1:当前位置 2:文件结尾
seek(偏移量,whence) seek(5,0)
# 偏移量:距离whence值的字符数
# whence:位置:0:文件开头 1:当前位置 2:文件结尾
f = open('数据.txt', 'r', encoding='utf-8')
print(f.tell())
f.seek(5, 0)
f1 = f.read(3) # 代表读几个
f.close()
print(f1)
print(f.tell())
f.seek(5, 0)
f1 = f.read(3) # 代表读几个
f.close()
print(f1)
4.文件写入后清空缓存,节约内存
# 清空缓冲区(释放缓冲区的占用,把这个区域分配给其他数据),写入数据到硬盘
f. flush()
# 清空缓冲区(释放缓冲区的占用,把这个区域分配给其他数据),写入数据到硬盘
f. flush()
5.文件与目录操作
import os
①文件操作
重命名 rename(目标文件名字,新的文件名)
os.rename('2.txt','2new.txt')
os.rename('aaa','bbb')
import os
①文件操作
重命名 rename(目标文件名字,新的文件名)
os.rename('2.txt','2new.txt')
os.rename('aaa','bbb')
②删除文件 remove()
os.remove('2new.txt')
os.remove('2new.txt')
③目录操作
路径:存储位置 。相对路径(以当前位置出发) 和 绝对路径(以盘符出发的路径形式/根目录)
Ⅰ. getcwd() 某个文件的存储路径
aa = os.getcwd()
print(aa)
Ⅱ. listdir() 返回一个列表,包含这个路径下的所有文件
list1 = os.listdir(aa)
print(list1)
路径:存储位置 。相对路径(以当前位置出发) 和 绝对路径(以盘符出发的路径形式/根目录)
Ⅰ. getcwd() 某个文件的存储路径
aa = os.getcwd()
print(aa)
Ⅱ. listdir() 返回一个列表,包含这个路径下的所有文件
list1 = os.listdir(aa)
print(list1)
Ⅲ.os.
mkdir('aaa') #创建文件夹
aaa/bbb
Ⅳ.os. chdir(路径) #改变默认目录到指定路径,假如当前路径下有文件1,2,3,os.chdir(1)就将路径制定到1文件
aaa/bbb
Ⅳ.os. chdir(路径) #改变默认目录到指定路径,假如当前路径下有文件1,2,3,os.chdir(1)就将路径制定到1文件
夹下;os.chdir('
./')代表当前文件所在路径;os.chdir('
../')代表当前文件上层所在路径;os.chdir(
'/')代表当前文件根目录
file_path = os.getcwd()
print(file_path)
os.mkdir('bbb')
print(os.getcwd())
file_path = os.getcwd()
print(file_path)
os.mkdir('bbb')
print(os.getcwd())
Ⅴ.目录树
os. makedirs('111/222/333/444') # 生成目录树
os. makedirs('111/222/333/444') # 生成目录树
os.
rmdir('aaa/bbb') # 删除文件夹
os.rmdir('111') # 目录不为空则不能删除
os.removedirs('111') # 错误,本能删除目录树
os.rmdir('111') # 目录不为空则不能删除
os.removedirs('111') # 错误,本能删除目录树
import shutil
shutil.rmtree('111') # 删除目录树
shutil.rmtree('111') # 删除目录树
6.批量修改文件名
# 文件批量改名 import os file = os.getcwd() print(file) file_list = os.listdir() print(file_list) for file in file_list: # 添加修改内容 new_name = '副本' + file os.rename(file, new_name) for file in file_list: # 改回修改前的内容 new_name = file[2:] os.rename(file, new_name)
7.文件拷贝
# 文件拷贝 import os file_list = os.listdir('./') print(file_list) name = input('请输入要备份的文件名字:') if name in file_list: index = name.rfind('.') # 从右检索文件名,记录文件名最后一个点的下标 copy_name = name[:index] + '-附件' + name[index:] copy = open(copy_name, 'w', encoding='utf-8') # 用于备份新文件 file = open(name, 'r', encoding='utf-8') # 用于读源文件 while True: data = file.read(1024 * 1024) # 防止文件过大,慢慢读 if len(data) == 0: # 读不到,说明没有数据了,跳出循环 break else: copy.write(data) # 否则写入备份文件 copy.close() file.close() else: print('文件不存在,重新输入!')
注意:如果是视频,音频等二进制文件,读写方式改为:wb,rb