python之文件操作
文件的打开与关闭
open(文件名, 访问模式)—打开文件
demo:
file = open('test.txt', 'w')
close() —关闭文件
demo:
file = open('test.txt', 'w')
file.close()
访问模式说明
- r : 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。
w : 打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件。 - a : 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后、如果该文件不存在,创建新文件进行写入。
- rb : 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头,这是默认模式。
- wb : 以二进制格式打开一个文件只用于写入,如果该文件不存在,创建新文件。
- ab : 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
- r+ : 打开一个文件用于读写,文件指针将会放在文件的开头。
- w+ : 打开一个文件用户读写,如果该文件已存在,则将其覆盖。如果该文件不存在,创建新文件。
- a+ : 打开一个文件用户读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式,如果该文件不存在,创建新文件用户读写。
- rb+ : 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头。
- wb+ : 以二进制格式打开一个文件用于读写,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
- ab+ : 以二进制格式打开一个文件用户追加,如果该文件已存在,文件指针将会放在文件的结尾。
write写数据
使用write()可以完成向文件写入数据
demo:
file = open('test.txt', 'w')
file.write('hello world')
file.close()
注意:如果文件不存在,创建文件。如果文件存在,就先清空,然后写入数据。
read读数据
使用read(num)可以从文件中读取数据,num表示要从文件中服务的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
demo:
f = open('test.txt', 'r')
#最多读取5个数据
content = f.read(5)
print(content)
print("-"*30)
#从上次读取的位置继续读取剩下的所有的数据
content = f.read()
print(content)
#注意:要关闭文件
f.close()
#结果:
hello
-----------------------------
world
- 注意:如果用open打开文件时,如果使用的“r”,那么可以省略,即只写open(‘test.txt’)
readlines读数据
readlines就像没有参数的read一样,按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
demo:
f = open('test.txt', 'r')
content = f.readlines()
print(type(content))
i = 1
for temp in content:
print("%d:%s" % (i, temp))
i += 1
f.close()
readline读数据
demo:
f = open('test')
content = f.readline()
print("1:%s" % content)
content = f.readline()
print("2:%s" % content)
f.close()
结果:
1:hello world
2:hello world
制作文件的备份
输入文件名字,然后程序自动完成对文件进行备份。
demo:
#提示输入文件名
oldFileName = input("请输入要拷贝的文件名字:")
#以只读的方式打开文件
oldFile = open(oldFileName, 'rb')
#提取文件的后缀
fileFlagNum = oldFileName.rfind('.')
fileFlagNum = 4
#rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回-1
#rfind() 方法语法:str.rfind(str, start=0 end=len(string))
if fileFlagNum > 0:
#利用下标取值[4:]
fileFlag = oldFileName[fileFlagNum:]
#组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '复件' + fileFlag
#组织新文件
newFile = open(newFileName, 'wb')
#把旧文件中的数据,一行一行的进行复制到新文件中
for lineContent in oldFile.readlines():
newFile.write(lineContent)
#关闭文件
oldFile.close()
newFile.close()
文件的相关操作
os.rename()重命名
rename(需要修改的文件名,新的文件名)
demo:
import os
os.rename('1.txt', '2.txt')
os.remove(待删除的文件名)
demo:
import os
os.remove('2.txt')
os.getcwd()获取当前目录
demo:
import os
os.getcwd()
os.chdir()改变默认目录
demo:
import os
os.chdir("../")
os.listdir()获取目录列表
demo:
import os
os.listdir("./")
os.rmdir()删除文件夹
import os
os.rmdir("demo")
批量修改文件名
demo:
#批量在文件名前加前缀
#批量在文件名前加前缀
import os
funFlag = 1 #1表示添加标志 2表示删除标志
folderName = './renameDir/'
#获取指定路径的所有文件名字
dirList = os.listdir(folderName)
#遍历输出所有文件名字
for name in dirList:
print(name)
if funFlag == 1:
newName = '[什哥出品]-' + name
elif funFlag == 2:
num = len('[什哥出品]-')
newName = name[num:]
print newName
os.rename(folderName+name, folderName+newName)