整理了一些在Python项目中常用的一些路径 / 文件 / 文件夹操作
路径操作
import os
# 路径拼接
path1 = '~'
path2 = 'desktop'
file_path = os.path.join(path1, path2)
# 判断文件(夹)是否存在
file_path = '要判断的文件(文件夹)路径'
if os.path.exists(file_path):
pass
# 判断文件/文件夹是否存在
path = '要判断的文件/文件夹路径'
if os.path.isfile(path):
pass # 是文件
if os.path.isdir(path):
pass # 是文件夹
# 创建文件夹
folder_path = '要创建的文件夹'
if not os.path.exists(folder_path):
os.mkdir(folder_path)
# 递归创建文件夹
folder_path = '要创建的文件夹'
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 规范化指定的路径
path = '路径'
normpath = os.path.normpath(path)
# 获取当前命令行所在的路径
path = '路径'
abspath = os.path.abspath(path)
# 递归遍历文件夹
def get_filepath(dir_path, list_name=[]):
"""递归获取目录下(文件夹下)所有文件的路径"""
for file in os.listdir(dir_path): # 获取文件(夹)名
file_path = os.path.join(dir_path, file) # 将文件(夹)名补全为路径
if os.path.isdir(file_path): # 如果是文件夹,则递归
get_filepath(file_path, list_name)
else:
list_name.append(file_path) # 保存路径
return list_name
get_filepath('./')文件操作
# 读取文件的两种方法
# with open 不需要手动调用 f.close()
with open('./config.txt', 'r', encoding='utf-8') as f:
text = f.read()
# open 需要手动调用 f.cloese()
f = open('./config.txt', 'r', encoding='utf-8')
text = f.read()
f.close()
# 写入文件同理
# 此处是覆盖写入(w),如果是追加写入,那么就是(w+)
with open('./config.txt', 'w', encoding='utf-8') as f:
f.write("需要写入文件的内容")
f.writelines("写入一行")
# 或
f = open('./config.txt', 'w', encoding='utf-8')
f.write("需要写入文件的内容")
f.writelines("Hello HaiCoder")
f.close()
# ##########################################################
# 检查文件操作权限
import os
# path 为文件路径,mode 为操作模式
path = "/file/path/foo.txt"
# os.F_OK: 检查文件是否存在
if os.access(path, os.F_OK):
print("Given file path is exist.")
# os.R_OK: 检查文件是否可读
if os.access(path, os.R_OK):
print("File is accessible to read")
# os.W_OK: 检查文件是否可以写入
if os.access(path, os.W_OK):
print("File is accessible to write")
# os.X_OK: 检查文件是否可以执行
if os.access(path, os.X_OK):
print("File is accessible to execute")JSON操作
import json
# data 变量定义如下
data = {'a': 1, 'b': {'c': '2', 'd': [3]}}
# 普通输出
with open('temp.json', 'w', encoding='utf-8') as fp:
json.dump(data, fp)
# 或者
# fp.write(json.dumps(data))
# temp.json 内容如下
# {"a": 1, "b": {"c": "2", "d": [3]}}
# 美化输出
with open('temp-beautify.json', 'w', encoding='utf-8') as fp:
json.dump(data, fp, indent=4)
# 或者
# fp.write(json.dumps(data, indent=4))
# temp-beautify.json 内容如下
# {
# "a": 1,
# "b": {
# "c": "2",
# "d": [
# 3
# ]
# }
# }
# temp.json 内容如下
# {"a": 1, "b": {"c": "2", "d": [3]}}
# 读取 json 文件
with open('temp.json', 'r', encoding='utf-8') as fp:
result = json.load(fp)
# 或者
# result = json.loads(fp.read())
print(result, result['b'], result.get('b'), sep='\n')
# 输出如下
# {'a': 1, 'b': {'c': '2', 'd': [3]}}
# {'c': '2', 'd': [3]}
# {'c': '2', 'd': [3]}文件进阶操作
该部分参考自:https: // blog.csdn.net/NeverLate_gogogo/article/details/109333970
# 可以在程序中直接使用open()方法来检查文件是否存在和可读写。
# 如果你open的文件不存在,程序会抛出错误,使用try语句来捕获这个错误。
# 程序无法访问文件,可能有很多原因:
# 如果你open的文件不存在,将抛出一个FileNotFoundError的异常
# 文件存在,但是没有权限访问,会抛出一个PersmissionError的异常。
# 所以可以使用下面的代码来判断文件是否存在:
try:
f = open()
f.close()
except FileNotFoundError:
print("File is not found.")
except PermissionError:
print("You don't have permission to access this file.")
# 其实没有必要去这么细致的处理每个异常,上面的这两个异常都是IOError的子类。所以可以将程序简化一下:
try:
f = open()
f.close()
except IOError:
print("File is not accessible.")本文由程序员小墨原创发表于 张小弟之家(blog.only4.work),转载请保留出处,谢谢。
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。
GitHub登录