打开文件
f = open(“test.py”,”w or r”)
r w a(追加)
rb wb ab(二进制) 例如图片 视频
r+ w+ a+ (可读可写)
rb+ wb+ ab+ 操作图片 音频
关闭文件
f.close()
读文件 f.read() 读取全部文件内容
读取一定字节的内容
f.read(数字)
写文件内容
f.write()
readline() 一行一行读取
readlines() 将一行一行读取的结果用列表存起来
例子:制作文件的备份
'''应用1:制作文件的备份
'''
#1、获取需要复制的文件名:
old_file_name = input("please input the file name you need to copy:")
#2、打开需要复制的文件
old_fid = open(old_file_name,'r')
#3、新建一个文件
#new_file_name = "[copy]"+ old_file_name
#new_fid = open("new_file.txt",'w')
#test.txt------------>test[copy].txt
position = old_file_name.rfind('.')
new_file_name = old_file_name[:position] + "[copy]" + old_file_name[position:]
new_fid = open(new_file_name,'w')
#4、从旧文件中读取内容到新文件中
#content = old_fid.read() #直接读取所有内容到内存中会造成内存容量不足
while True:
content = old_fid.read(1024) #每一次读取一定量的内容
if len(content) == 0:
break
new_fid.write(content)
#5、关闭两个文件
old_fid.close()
new_fid.close()
问题:如果一个文件很大,比如5G,试想应该怎么样才能把文件的数据读取到内存然后进行处理呢?
当读取大文件时候,禁止使用read()一次性读取所有内容,而应该是把内容分次数进行存取,通过使用循环来进行实现
定位读写
定位读写(不从开始,从某个特定位置开始进行读写)
seek(偏移量,指针位置) 指针位置值有三种;0(文件开头) 1(当前位置) 2(文件末尾)
f = open("test.txt",'r')
f.seek(2,0) #从文件开头处偏移两个位置处进行操作
print(f.readline())
print(f.read())
print(f.tell()) #获取指针位置
f.seek(0,0) #将指针重新指向文件的开头处
print(f.tell())
print(f.read())
文件以及文件夹操作
import os
重命名文件:os.rename()
删除文件:os.remove()
创建文件夹:os.mkdir()
删除文件夹:os.rmdir()
返回当前操作的绝对路径:os.getcwd()
改变操作路径:os.chdir()
获取目录列表:os.listdir(“./”)
批量重命名例子
import os
#1、获取要重命名的文件夹
folder_name = input("please the folder name that you need to rename:")
#2、获取指定的文件夹里面的所有文件名字
file_names = os.listdir(folder_name) #返回一个列表
#os.chdir(folder_name)
#3、重命名
for name in file_names:
print(name)
old_file_name = folder_name + '/' + name
new_file_name = folder_name + '/' + 'JD-' + name
os.rename(old_file_name,new_file_name) #注意路径问题