组合目录+文件

会根据系统将目录分隔符设置为/或者\\(由os.path.sep设置为正确的文件夹分割斜杠

os.path.join('usr', 'bin', 'spam')

工作目录

当前工作目录

os.getcwd()

切换工作目录

os.chdir('C:\\Windows\\System32')

创建多层目录

os.makedirs('C:\\delicious\\walnut\\waffles')

os.path.abspath(path)返回参数的绝对路径,是将相对路径转换为绝对路径的简便方法

os.path.isabs(path),如果参数是绝对路径就返回 True

os.path.relpath(path, start)返回从start路径跳转到path的相对路径,如果没有start,就使用当前工作目录作为开始路径

>>> os.path.relpath('C:\\Windows', 'C:\\')

'Windows'

>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')

'..\\..\\Windows'

>>> os.getcwd()

'C:\\Python34'

os.path.dirname(path)返回包含 path 参数中最后一个斜杠之前的所有内容,也叫目录名称

os.path.basename(path)返回字符串包含path参数中最后一个斜杠之后的所有内容,也叫基本名称

>>> path = 'C:\\Windows\\System32\\calc.exe'

>>> os.path.basename(path)

'calc.exe'

>>> os.path.dirname(path)

'C:\\Windows\\System32'os.path.split()获得包含目录名称+基本名称的元组

os.path.getsize(path)返回path参数中文件的字节数

os.listdir(path)返回文件名列表,包含path参数中的每个文件

如果path参数所指的文件或文件夹存在,os.path.exists(path)返回True,否则返回False

如果path参数存在,并且是文件,os.path.isfile(path)返回True,否则返回False

如果path参数存在,并且是文件夹,os.path.isdir(path)返回True,否则返回False

读写

可以使用w,a,r,wb,ab,rb等模式

with open('xxx.xx', 'wb') as f:
    f.write('xxxxxxxxx')

复制

如果destination是文件夹,source文件将复制到destination中,并保持原来的文件名

如果destination是文件名结尾,它将作为被复制文件的新名字

shutil.copy(source, destination)

移动

如果destination是文件夹,source 文件将移动到destination中,并保持原来的文件名

如果destination文件夹中已存在source这个文件,destination文件夹中的同名文件将被覆盖

如果没有destination文件夹,就会将source改名为destination

shutil.move(source, destination)

删除

os.unlink(file)删除file文件(单个文件)

os.rmdir(path)删除path文件夹,该文件夹必须为空,其中没有任何文件和子文件夹(单个空文件夹)

shutil.rmtree(path)删除path文件夹,它包含的所有文件和子文件夹都会被删除

send2trash.send2trash(file)将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除它们

os.walk()函数被传入一个字符串值,即一个文件夹的路径。你可以在一个 for

os.walk()遍历目录树,返回 3 个值:

1.当前遍历的文件夹名称;

2.当前文件夹中子文件夹列表;

3.当前文件夹中文件列表。

压缩


# 新建压缩文件以写模式打开,写模式将擦除ZIP文件中所有原有的内容

# 第二个参数传入'a'则以添加模式打开,将文件添加到原有的 ZIP 文件中,

>>> newZip = zipfile.ZipFile('new.zip', 'w')

# write()方法第一个参数传入文件,就会压缩该文件,将它加到ZIP文件中,第二个参数是“压缩类型”,告诉计算机使用怎样的算法来压缩文件

>>> newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)

>>> newZip.close()

打开压缩文件

>>> exampleZip = zipfile.ZipFile('example.zip')

# 查看压缩文件中所有文件和文件夹的列表

>>> exampleZip.namelist()

['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']

# 返回指定文件的ZipInfo对象,ZipInfo对象有自己的属性

>>> spamInfo = exampleZip.getinfo('spam.txt')

# 原来文件大小

>>> spamInfo.file_size

13908

# 压缩后文件大小

>>> spamInfo.compress_size

3828

>>> 'Compressed file is %sx smaller!' % (round(spamInfo.file_size / spamInfo.compress_size, 2))

'Compressed file is 3.63x smaller!'

>>> exampleZip.close()

解压

# extractall()从ZIP文件中解压所有文件和文件夹,放到当前工作目录中

>>> exampleZip = zipfile.ZipFile('example.zip')

>>> exampleZip.extractall()

# 向extractall()传递文件夹名称,文件将解压到指定目录

>>> exampleZip.extractall('C:\\ delicious')

>>> exampleZip.close()

# extract()从ZIP文件中解压单个文件,第二个参数是解压到指定目录,如果指定文件夹不存在,会自动创建

>>> exampleZip.extract('spam.txt')

'C:\\spam.txt'

>>> exampleZip.extract('spam.txt', 'C:\\some\\new\\folders')

'C:\\some\\new\\folders\\spam.txt'

>>> exampleZip.close()