使用 with open(file=‘<文件名称.后缀名>’, mode=‘w’, encode=‘<编码格式>’) 方法进行
- mode=‘w’ / mode=‘a’: 表示在文件不存在的时候,会自动创建新文件
- encode : 常用的格式是 UTF-8 格式
import json
with open('test.json', mode='w') as f:
dic = {1: 'test'}
json.dump(dic, f)
f.close() # 将这个文件进行关闭,以防止后面操作产生冲突
with open('Test1/test2/test3/demo1/test1.json', mode='a') as f:
dic = {1: 'test'}
json.dump(dic, f)
with open('test.py', mode='w') as f:
f.write("print('hello world')")
创建目录文件:
2.1 创建单个目录: os.mkdir(path[, mode])
os.mkdir('test') # 创建单一目录文件 test
2.2 创建多级目录: os.makedirs(name, mode=0o777, exist_ok=False)
import os
try:
os.makedirs('test', exist_ok=False)
except FileExistsError: # test 目录已存在,exist_ok=Flase,处理FileExistsError异常
raise FileExistsError('test')
os.makedirs(name='Test/test/test/demo', exist_ok=True)
仅删除脚本文件,不删除文件夹: (例如: .txt 、 .js 、 .json 、 .py 等)
1.1 os.remove(path) : 删除指定路径的文件,只能删除文件,如果要删除的是文件目录则会抛出OSError异常
os.remove(path='test.py') # 删除脚本文件test.py
try: # 试图通过os.remove() 去删除demo目录
os.remove(path='Test/test/test/demo')
except OSError: # 此处会抛出 OSError异常数据
raise OSError('test')
1.2 os.unlink(path) : 删除文件,如果删除目录文件,则会 返回一个error
os.unlink(path='Test/test/test/demo') # 删除的是目录文件,将会报错
os.unlink(path='test.json') # 删除 test.json 文件
注意: os.remove() 和 os.unlink() 本质上没有什么区别,都是用来删除脚本文件,不能删除目录文件
删除目录文件:
2.1 os.rmdir() : 删除空目录文件,使用这个方法之前必须要先清楚该目录下的所有文件,否则将会抛出 OSError异常
try:
os.rmdir(path='Test/test/test.py') # Test/test/test/demo 整个目录是这样,如果只删除前两级目录,将会报出 OSError异常
except OSError: # 此处处理 OSError异常,并捕获异常数据
raise OSError('test')
2.2 os.removedirs(name) : 递归删除文件,可以删除目录文件,只能通过传递文件名称单一进行删除文件,不能传入要删除的文件路径否则将会报出NotADirectoryError异常
import os
try: # 尝试通过传入路径去删除 test.json文件,会抛出NotADirectoryError
os.removedirs(name='Test1/test2/test3/demo1/test.json')
except NotADirectoryError: # 此处处理 NotADirectoryError 异常,并捕获异常数据
raise NotADirectoryError('test.json')
os.removedirs(name='test.py') # 删除文件test.py
2.3 shutil.rmtree(path, ignore_errors=False, οnerrοr=None) : 删除指定目录文件包含此目录下的所有文件,如果path包含多层目录,则只会删除最下层的目录及内部文件
import shutil
try:
shutil.rmtree(path='demo/test2/test3/demo1') # 给的path实际不存在,则会抛出异常
except FileNotFoundError: # 此处处理 FileNotFoundError异常,并捕获异常数据
raise FileNotFoundError('demo1')
shutil.rmtree(path='Test1/test2/test3/demo1') # 删除demo1目录及其内部所有文件
try:
os.rename(src='test', dst='test11')
except FileNotFoundError:
raise FileNotFoundError('test11')
try: # 进行层级重命名: 全路径为 test11\test12\test
os.rename(src='test11/test', dst='test11/test12')
except FileNotFoundError:
raise FileNotFoundError('test11')
1.2 os.renames(old=’<要重命名的目录>‘, new=‘<文件或目录的新名字>’) 用于递归重命名目录或文件,可以同时给传入old的path上的所有文件进行重命名,也可以只重命名对应层级的目录名称; 命名规则同 os.rename() 方法# 全路径 test11\test12\test,将其中前两级的目录名称进行重命名
os.renames(old='test11/test12', new='test13/test14')
1.3 shutil.move(src, dst, copy_function=copy2) :主要用于移动文件或目录,但在同一文件系统内,它也可以用来重命名文件;只能重命名文件系统除外层外的目录/文件,否则会变成新的文件系统
# 全路径: test15\test16\test 重命名第2级目录名称,还在当前文件系统中
shutil.move(src='test15/test16', dst='test15/test18')
1.4 修改脚本文件内容: with open(file=‘<文件名称.后缀名>’, mode=‘a+’, encode=‘<编码格式>’)
with open('Test1/test2/test3/demo1/test.json', mode='a+') as f:
dict = {1: 'test',
2: 'test2',
3: 'test3'
}
json.dump(dict, f)
f.close() # 将这个文件进行关闭,以防止后面操作产生冲突
# 原内容:{"1": "test", "2": "test3", "3": "test3"}
# 新内容: {"1": "test", "2": "test3", "3": "test3"}
# {"1": "test", "2": "test3", "3": "test3"}
with open('Test1/test2/test3/demo1/test.json', mode='w') as f:
dict = {1: 'test',
2: 'test3',
3: 'test3'
}
json.dump(dict, f) # 原内容: {"1": "test", "2": "test2", "3": "test3"}
# 新内容: {"1": "test", "2": "test3", "3": "test3"}
f.close() # 将这个文件进行关闭,以防止后面操作产生冲突
获取当前路径: os.getcwd() 返回当前路径值
print(os.getcwd())
获取当前路径的二进制格式: os.getcwdb() 返回当前路径值
print(os.getcwdb())
os.listdir(path=‘<需要列出的目录路径>’) : 用于返回指定的文件夹包含的文件或文件夹的名字的列表
# 列出当前路径下的所有文件/目录
print(os.listdir(path='.'))