Python—文件及文件夹操作(os)(shutil)

创建

创建文件夹

os.mkdir只能创建单层目录,os.makedirs能创建多层目录,直接用os.makedirs

import os

os.makedirs('新文件夹')

注意如果要创建的文件夹已经存在的话会报错的

当文件夹不存在时才创建文件夹

import os

if not os.path.exists('新文件夹'):
    os.makedirs('新文件夹')

创建多层文件夹

import os

os.makedirs('第一层文件夹/第二层文件夹/第三层文件夹')

Python—文件及文件夹操作(os)(shutil)_第1张图片

exist_ok参数

os.makedirs(args.output, exist_ok=True)
  • 是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。

创建文件

直接open即可

import os
file = open('new.txt' ,'w')
file.close()

shutil = sh + util

复制

复制文件

shutil.copy(要复制的文件,要复制的位置)

import shutil

shutil.copy('file1.txt', './新文件夹')
shutil.copy('file1.txt', './新文件夹/new_file.txt') #把文件再重命名

复制文件夹

shutil.copytree(要复制的文件夹,要复制到的新文件夹位置)

import shutil

shutil.copytree('mmdet', '../AE/mmdet')

注意一定要写成这种形式,不能只写个shutil.copytree('mmdet', '../AE/')

shutil.copy()可以,shutil.copytree()不行

移动文件或文件夹

shutil.move(要移动的文件/文件夹, 要移动的位置)

import shutil

shutil.move('file1.txt','新文件夹/file3.txt')
shutil.move('file1.txt','新文件夹/')
shutil.move('新文件夹','新新文件夹/')

重命名文件或文件夹

os.rename(要重命名的文件/文件夹, 新的名字)

import os

os.rename('新文件夹', 'hxx文件夹')
os.rename('file1.txt', 'new.txt')

创建压缩包 / 压缩文件夹

shutil.make_archive("test_archive", "zip", "test_dir/")

删除

删除文件

os.remove(要删除的文件)

import os

os.remove('file1.txt')

注意只能删文件,如果是文件夹则会出错

删除文件夹

shutil.rmtree(要删除的文件夹)

import shutil

shutil.rmtree('新新文件夹')

获取当前python程序运行路径

import os

print(os.getcwd())

Python—文件及文件夹操作(os)(shutil)_第2张图片

关于路径中的斜杠(/)和反斜杠(\)

列出当前程序文件夹下的所有文件和文件夹

os.listdir()

import os

print(os.listdir())

Python—文件及文件夹操作(os)(shutil)_第3张图片

列出指定某个文件夹下的所有文件和文件夹

os.listdir(指定的绝对路径或相对路径)

import os

#这3种写法都可以
print(os.listdir('D:\c'))
print(os.listdir('D:\\c'))
print(os.listdir('D:\\c\\'))

Python—文件及文件夹操作(os)(shutil)_第4张图片

判断是文件还是目录

判断目录

if os.path.isdir(path):

判断文件

if os.path.isfile(path):

判断文件和文件夹是否存在

os.path.isfile(文件名) #如果目录不存在就返回False

os.path.exists(文件名)  #如果文件不存在就返回False

os.path.exists(文件夹名)  #如果目录不存在就返回False

import os
os.path.isfile('test.txt') #如果不存在就返回False
os.path.exists('新文件夹')  #如果目录不存在就返回False

递归遍历所有子目录和子文件

os.walk()

返回一个3个元素的元组,(dirpath,dirnames,filenames).

  • dirpath:要列出指定目录的路径
  • dirnames:目录下的所有文件夹
  • filenames:目录下的所有文件
import os
for dirpath,dirname,filename in os.walk('data/'):
    for dir in dirname:
        print(dir)
    for file in filename:
        print(file)

你可能感兴趣的:(python,文件,文件夹)