python文件IO相关

python对文件IO的支持很完善,python3更是针对编码形成了一套更完整的体系。文件操作主要可以分为文件操作、目录操作和其他常用操作三类,以下依次说明,常用方法依旧使用粗体标出。
本文有部分内容转载自网上。

常用文件操作方法(注意文件指针概念)

1.os.mknod(“test.txt”) 创建空文件
2.fp = open(“test.txt”,w) 直接打开一个文件,如果文件不存在则创建文件
注意:open函数有一个文件指针的重要概念,用白话说即目前在文件的什么位置执行相关操作,具体在第3条open模式中解释(此后文件指针简称“指针”)。
3.关于open的模式问题:
r 只能读。
w 只能写。覆盖整个文件,不存在则创建。
a 只能写。从文件底部添加内容,不存在则创建。
解释:前三种模式只能完成一项操作。r模式最初将指针置于文件开头;w模式覆盖原先文件内容,最初将指针置于文件开头;a模式从文件末尾追加数据,因此最初将指针置于文件末尾。
r+ 可读可写。不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容。
w+ 可读可写。如果文件存在,则覆盖整个文件不存在则创建。
a+ 可读可写。从文件顶部读取内容,从文件底部添加内容,不存在则创建。
解释:后三种模式实现了多种功能,在功能上也有一定重合。r+最初将指针置于文件开头,在本次write操作后,与我们日常输入文本的光标相似,指针会移到输入内容之后(因此这时不能read出之前写入的内容)。w+与r+类似,但r+对不存在的文件会报错,w+则会创建文件。a+的指针最初放在文件末尾。可以使用f.tell()获得当前指针位置,使用f.seek()修改指针位置。

常用目录操作方法

1.创建目录 os.mkdir(“file”)
2.删除文件 os.remove(“file”)
3.判断目录是否存在 os.path.exists(“dir”)

常用其他操作

1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
2.返回指定目录下的所有文件和目录名:os.listdir()
3.运行shell命令: os.system()
4.创建多级目录:os.makedirs(r”c:\python\test”)
5.创建单个目录:os.mkdir(“test”)

文件综合操作实例

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目录与文件
        lists = file_path[1].split('.') #分割出文件与文件扩展名
        file_ext = lists[-1] #取出后缀名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意这里的i是一个陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))

其他方法

文件操作
rb:以二进制读模式打开
wb:以二进制写模式打开
ab:以二进制追加模式打开
rb+:以二进制读写模式打开
wb+:以二进制读写模式打开
ab+:以二进制读写模式打开

fp.read([size]):size为读取的长度,以byte为单位
fp.readline([size]):读一行,如果定义了size,有可能返回的只是一行的一部分。
fp.readlines([size]):把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str):把str写到文件中,write()并不会在str后加上一个换行符。
fp.writelines(seq):把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close():关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生。

目录操作

1.复制文件:
shutil.copyfile(“oldfile”,”newfile”) #oldfile和newfile都只能是文件
shutil.copy(“oldfile”,”newfile”) #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
2.复制文件夹:
3.shutil.copytree(“olddir”,”newdir”) #olddir和newdir都只能是目录,且newdir必须不存在
4.重命名文件(目录)
os.rename(“oldname”,”newname”) #文件或目录都是使用这条命令
5.移动文件(目录)
shutil.move(“oldpos”,”newpos”)
6.删除目录
os.rmdir(“dir”) #只能删除空目录
shutil.rmtree(“dir”) #空目录、有内容的目录都可以删
7.转换目录
os.chdir(“path”) #换路径

其他操作
1.函数用来删除一个文件:os.remove()
2.删除多个目录:os.removedirs(r”c:\python”)
3.检验给出的路径是否是一个文件:os.path.isfile()
4.检验给出的路径是否是一个目录:os.path.isdir()
5.判断是否是绝对路径:os.path.isabs()
6.检验给出的路径是否真地存:os.path.exists()
7.返回一个路径的目录名和文件名:os.path.split()
8.分离扩展名:os.path.splitext()
9.获取路径名:os.path.dirname()
10.获取文件名:os.path.basename()
11.读取和设置环境变量:os.getenv() 与os.putenv()
12.给出当前平台使用的行终止符:os.linesep Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
13.指示你正在使用的平台:os.name 对于Windows,它是’nt’,而对于Linux/Unix用户,它是’posix’
14.重命名:os.rename(old, new)
15.获取文件属性:os.stat(file)
16.修改文件权限与时间戳:os.chmod(file)
17.终止当前进程:os.exit()
18.获取文件大小:os.path.getsize(filename)

猜你喜欢

转载自blog.csdn.net/u012614287/article/details/69525940
今日推荐