python文件操作汇总

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)

你可能感兴趣的:(Python)