目录:
1:文件操作的介绍
2:文件的开关及读写
3:使用os模块对文件操作
4:批量处理文件
5:Python换行符
文件操作的介绍
文件作用
就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,加载到内存中,而不必重新制作一份,省时省力。
在Python操作文件的整体过程与使用word编写一份简历的过程是很相似的,都需要先打开文件,编写内容,保存内容然后退出。
文件的开关及读写
打开文件open
在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个
新文件open(文件名,访问模式)
示例如下:
f = open(‘test.txt’, ‘w’)
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件
不存在,创建新文件。write
# 关闭这个文件
f.close()
r :以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在会崩溃。Read
w :打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。write
a :打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
写数据(write):
使用write()可以完成向文件写入数据
读数据(read):
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
读数据(readlines):
就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
读数据(readline)
#coding=utf-8
f = open(‘test.txt’, ‘r’)
content = f.readline()
print(“第1行:%s”%content)
content = f.readline()
print(“第2行:%s”%content)
f.close()
练习:将test.txt文件,复制一份,文件名叫test[复制].txt,内容自定义
#!/usr/local/bin/python3
copy_name = input("请输入你要复制的文件名:")
old_file = open(copy_name,"r")
file_read = old_file.read()
#开始切片,需要把.以前的内容和.以后的内容拿出来
find_num = copy_name.rfind(".")
begin = copy_name[:find_num]
end = copy_name[find_num:]
new_filename = begin+"[复制]"+end
new_file = open(new_filename,"w")
new_file.write(file_read)
new_file.close()
old_file.close()
文件读写定位
获取当前读写的位置tell
在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取
定位到某个位置seek
使用seek()
seek(offset, from)有2个参数
offset:偏移量
from:方向
0:表示文件开头
1:表示当前位置
2:表示文件末尾
Python3中的seek定位:
定位到文件开头:seek(0或正数,0) ; 不支持 seek(负数,0)
定位到当前位置:支持 seek(0,1) ; 不支持 seek(正,1) seek(负数,1)
定位到末尾:支持 seek(0,2) ; 不支持 seek(正,2) seek(负数,2)
Python2中的seek定位:
定位到文件开头:seek(0或正数,0) ; 不支持 seek(负数,0)
定位到当前位置:支持 seek(正,1) ; 不支持seek(负数,1)
定位到末尾:支持 seek(正,2) ; 不支持 seek(负数,2)
使用os模块对文件操作
使用os模块对文件的重命名、删除
有些时候,需要对文件进行重命名、删除等一些操作,Python的os模块中
都有这么功能
1. 文件重命名rename
os模块中的rename()可以完成对文件的重命名操作
rename(需要修改的文件名, 新的文件名)
import os
os.rename(“程序猿自身修养.txt”, “程序员自身修养.txt”)
2. 删除文件remove
os模块中的remove()可以完成对文件的删除操作
remove(待删除的文件名)
import os
os.remove(“程序员自身修养.txt”)
使用OS对文件夹的相关操作:
3.创建文件夹
import os
os.mkdir(“张三”)
4.创建多层目录
import os
os.makedirs(“张三/李四/王二”)
5.获取当前目录
import os
os.getcwd()
6.改变默认目录
进入到某个目录,或者是切换目录
import os
os.chdir("./…/")
7.获取目录列表,包含文件和目录
import os
print(os.listdir("./"))
8.删除文件夹
删除目录 path,要求path必须是个空目录,否则抛出OSError错误
import os
os.rmdir(“张三”)
练习:提示用户创建一个目录,进入目录后在创建一个目录,然后在此目录下新建一个文本,文本内容自定义,需要把文本内容打印到终端上。
#!/usr/local/bin/python3
import os
dir1 = input("请输入你要创建目录的名称:")
os.mkdir(dir1)
os.chdir(dir1)
dir2 = input("请输入你要创建目录的名称:")
os.mkdir(dir2)
os.chdir(dir2)
#创建两个目录并且进入
f = open("flyflywin.txt","w")
f.write("今天还是要继续学习")
f.close()
#创建文件,编写内容后,关闭
j = open("flyflywin.txt","r")
a = j.read()
print(a)
#打印到终端
j.close()
批量修改文件名
练习:首先需要批量创建文件
#!/usr/local/bin/python3
i=1
while i<=18:
filename = open("仙剑奇侠传-%d.avi"%i,"w")
filename.close()
i+=1
在将这些文件批量改名
#!/usr/local/bin/python3
import os
a = input("请输入你要批量修改文件的目录:")
print(os.listdir(a))
os.chdir(a)
for i in os.listdir():
os.rename(i,"flyflywin-%s"%i)
python换行符问题
在linux和mac系统上我们读写文本文件使用二进制方式或者文本方式都可以,因为在处理\n都是一样的;那么读写文本文件和二进制文件的时候,可以使用r和w模式或者rb和wb模式。
在window中的换行是\r\n,当我们使用程序以文本方式写入一个\n的时候,默认会帮我们加上\r,这样打开文件的时候才能得到换行的效果;所有在window上读写文本文件的时候,建议使用r或者w模式。在读写二进制文件的时候,建议用rb和wb模式。
不同操作系统换行符是不一样的
在处理文本数据的时候体现在不同操作系统处理\r\n是不一样的
不同操作系统换行符是不一样的
linux -->\n
unix–>\n
mac–>老版本(\r)–>\n
windows -->\r\n
对应换行符windows遇到\r\n才换行显示