Python脚本随笔-文件操作
刚开始实习,需要用python写脚本,记录一下常用的文件操作。文件操作需要用到的库:os
- 路径操作
- 获取当前路径:os.getcwd(),返回值为一个字符串。例如:rootdir = os.getcwd()
- 路径拼接:os.path.join(parameter1,parameter2,parameter3.....),返回值会按照参数顺序将之拼接为一个路径。例如:
- 判断文件是否存在:if os.path.isfile(path):path表示文件路径。例如:if os.path.isfile(rootdir+"file.txt"):
- 判断文件夹是否存在:if os.path.exists(path):path表示文件夹。例如:if os.path.isfile(rootdir):
- 路径操作举例:
import os #获取当前路径 print '***PathNow***' print os.getcwd() print os.path.abspath(os.path.dirname(__file__)) #获取上级路径 print '***HighPath***' print os.path.abspath(os.path.dirname(os.path.dirname(__file__))) print os.path.abspath(os.path.dirname(os.getcwd())) print os.path.abspath(os.path.join(os.getcwd(), "..")) #获取上上级路径 print '***HigherPath***' print os.path.abspath(os.path.join(os.getcwd(), "../.."))
依次输出py文件所在的绝对路径和上级绝对路径
- 文件的遍历:
-
list = os.listdir(path1) for i in range(0,len(list)): path = os.path.join(rootdir,list[i])
list是path1下的文件列表,path是path1下的文件绝对路径文件的指定查找:
-
- 文件的查找
- 第一种查找方法:字符串分割
if os.path.splitext(path)[1]==".txt"
“.txt”为文件绝对路径的后缀,path表示文件绝对路径,路径最后一层为文件名
- 实现函数举例
def delate_type_file(target,filetype): rootdir = os.path.join(os.getcwd(),target) list = os.listdir(rootdir) #列出文件夹下所有的目录与文件 for i in range(0,len(list)): path = os.path.join(rootdir,list[i]) if os.path.splitext(path)[1]==".txt":#.txt为文件后缀,用filetype替换 print(os.path) os.remove(path)
filetype为文件名后缀
- 第二种查找方法:判断文件绝对路径的截止字符
if f.endswith(".txt")
".txt“表示文件绝对路径后缀,path表示文件绝对路径,路径最后一层为文件名
- 实现函数举例:
def delate_type_file2(target,filetype): rootdir = os.path.join(os.getcwd(),target) list = os.listdir(rootdir) #列出文件夹下所有的目录与文件 for f in list: if f.endswith(".txt") #".txt"为文件后缀,可用filetype替换 #文件操作
filetype为文件名后缀
- 第一种查找方法:字符串分割
- 文件的删除
- 先判断是否要删除的绝对路径为有效文件,之后删除
if os.path.isfile(path): os.remove(path)
os.remove函数参数为字符串,表示要删除的文件所处的绝对路径
- 删除函数举例:
#文件的删除:删除当前目录下target文件夹中的所有文件 def delate_file(target): rootdir = os.path.join(os.getcwd(),target) print rootdir list = os.listdir(rootdir) #列出文件夹下所有的目录与文件 for i in range(0,len(list)): path = os.path.join(rootdir,list[i]) if os.path.isfile(path): print(os.path) os.remove(path)
target为当前py文件所在的文件夹中的一个子文件名
- 先判断是否要删除的绝对路径为有效文件,之后删除
- 文件的重命名
- 调用函数:os.rename,需要传入两个参数。第一个参数为文件原始绝对路径,第二个参数为文件新的绝对路径
#path路径下把后缀为old_name的文件修改为后缀为new_name的文件 def rename_file(path,old_name,new_name): list = os.listdir(path) for f in list: portion = os.path.splitext(f) if portion[1] == old_name: new = portion[0] + new_name filenamedir = path + "\\" + f newnamedir = path + "\\" + new print(filenamedir) print(newnamedir) os.rename(filenamedir,newnamedir)
filenamedir为原始文件绝对路径,newnamedir为新文件绝对路径
- 调用函数:os.rename,需要传入两个参数。第一个参数为文件原始绝对路径,第二个参数为文件新的绝对路径
- 文件的复制
- 需要调用shutil库的copyfile函数,copyfile函数需要传入两个参数。第一个参数为文件原始绝对路径,第二个参数为文件新的绝对路径
#文件的复制:从路径1复制指定类型的文件到路径2,需要调用shutil库的copyfile函数 from shutil import copyfile def copy_file(path1,path2,last_name): list = os.listdir(path1) #列出文件夹下所有的目录与文件 for i in range(0,len(list)): path = os.path.join(rootdir,list[i]) if path.endwith(last_name): copyfile(path1,path2)
- 需要调用shutil库的copyfile函数,copyfile函数需要传入两个参数。第一个参数为文件原始绝对路径,第二个参数为文件新的绝对路径