Date: 2021.03.24
Author: jwensh
操作文件及文件夹的记录
os.getcwd() #返回当前工作路径
os.path.isabs() #判断是否是绝对路径
os.path.isfile() #检验给出的路径是否是一个文件
os.path.isdir() #检验给出的路径是否是一个目录
os.sep #文件的路径分隔符 如:在windows上是 '\' 而在Linux上是 '/'
os.walk() #文件遍历
如:def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
print('root_dir:', root) # 当前目录路径
print('sub_dirs:', dirs) # 当前路径下所有子目录
print('files:', files) # 当前路径下所有非目录子文件
file_name('D://test')
os.path.splitext() #分离扩展名
os.system() #运行shell命令:
os.path.exists() #检验给出的路径是否真地存:
os.getenv() 与os.putenv() #读取和设置环境变量
os.linesep #给出当前平台使用的行终止符 如: windowss使用'\r\n' ,Linux使用'\n'而Mac使用'\r'
os.name #指示你正在使用的平台: 如:对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
os.chmod(file) #修改文件权限与时间戳
os.exit() #终止当前进程
os.remove() #删除文件 或空文件夹
os.stat() #获取文件属性
需要注意:操作的目录必须是空的,删除参考 shutil
模块
os.makedirs("file1/file2/file3") #创建文件夹目录. 创建多级目录
os.mkdir("file") # 创建文件夹. 但是上级目录必须存在
os.copy("oldfile","newfile") #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
os.rename("oldname","newname") #重命名文件(目录) 文件或目录都是使用这条命令
os.removedirs() # 删除多级目录, 要求必须是空的
os.rmdir("dir") #只能删除空目录
os.listdir() #返回指定目录下的所有文件和目录名
os.path.split(path) #返回一个路径的目录名和文件名
os.path.dirname() #获取路径名
os.path.basename() #获取文件名
os.path.getsize(filename) #获取文件大小
os.chdir("path") 换路径
shutil是python内置的模块,可以引用,底层也是基于os
和sys
模块的操作
shutil.copytree("olddir","newdir") #复制文件夹: olddir和newdir都只能是目录,且newdir必须不存在
shutil.move("oldpos","newpos") #移动文件(目录)
shuil.rmtree(path, ignore_errors=False, onerror=None) # 递归删除目录树 (慎重使用)
encoding #文件编码
mode #打开模式
name #文件名
关于open 模式:
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
lines = object_file.readlines( ) #读第一行
for line in file_object: #如果文件是文本文件,还可以直接遍历文件对象获取每行:
print(line)
with open("t.txt",mode="w",encoding="utf-8") as f: #写文件,当文件不存在时,就直接创建此文件
pass
with open(filename1) as fp1, open(filename2) as fp2, open(filename3) as fp3:
for l1 in fp1:
l2 = fp2.readline()
l3 = fp3.readline()
# do something
或
from contextlib import nested
with nested(open(filename1), open(filename2), open(filename3)) as (fp1, fp2, fp3):
for l1 in fp1:
l2 = fp2.readline()
l3 = fp3.readline()
# do something
from contextlib import ExitStack
file_p1 = "/a/a.txt"
file_p2 = "/a/b.txt"
file_p3 = "/a/c.txt"
with ExitStack() as stack:
files = [stack.enter_context(open(fame, 'r+')) for fame in [file_p1, file_p2, file_p3]]
# for row in zip(*files):
for r1,r2,r3 in zip(files[0], files[1], files[2]):
pass # rows is now a tuple containing one row from each file
注意:异常处理