小墨の博客

梦想需要付诸行动,否则只能是梦

Python 路径操作、文件操作、JSON操作(原创)

整理了一些在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

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:512
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:62
    • 浏览总数:235404

    | | |
    | |  Z-Blog PHP