feather 和csv 格式转换工具

内容目录

feather 转csv

安装python

安装python依赖

pip3 install pandas
pip3 install pyarrow

新建feather2csv.py

拷贝如下代码保存

import os
import pandas as pd
import argparse

def convert_feather_to_csv(file_name="all"):
    """
    将指定的 .feather 文件或当前目录下所有 .feather 文件转换为同名 .csv 文件。

    参数:
        file_name (str): .feather 文件名或 "all"。
                        如果为 "all"(默认值),则转换当前目录下所有 .feather 文件。
    """
    current_directory = os.getcwd()

    if file_name == "all":
        # 转换当前目录下所有 .feather 文件
        files = [f for f in os.listdir(current_directory) if f.endswith('.feather')]
        if not files:
            print("当前目录下没有 .feather 文件。")
            return

        print(f"找到 {len(files)} 个 .feather 文件,开始转换...")
        for file in files:
            file_path = os.path.join(current_directory, file)
            _convert_single_file(file_path)
        print("所有文件转换完成。")
    else:
        # 转换指定的文件
        if not file_name.endswith('.feather'):
            print("文件格式错误,请提供 .feather 文件。")
            return
        file_path = os.path.join(current_directory, file_name)
        if not os.path.isfile(file_path):
            print(f"文件 {file_name} 不存在。")
            return
        _convert_single_file(file_path)

def _convert_single_file(file_path):
    """
    将单个 .feather 文件转换为同名 .csv 文件。

    参数:
        file_path (str): .feather 文件的路径。
    """
    if not file_path.endswith('.feather'):
        print(f"跳过非 .feather 文件: {file_path}")
        return

    # 读取 .feather 文件
    try:
        df = pd.read_feather(file_path)
    except Exception as e:
        print(f"读取 .feather 文件时出错 ({file_path}): {e}")
        return

    # 构造 .csv 文件路径
    csv_path = os.path.splitext(file_path)[0] + '.csv'

    # 保存为 .csv 文件
    try:
        df.to_csv(csv_path, index=False)
        print(f"文件已成功转换并保存为: {csv_path}")
    except Exception as e:
        print(f"保存 .csv 文件时出错 ({file_path}): {e}")

if __name__ == "__main__":
    # 设置命令行参数解析
    parser = argparse.ArgumentParser(description="将 .feather 文件转换为 .csv 文件")
    parser.add_argument(
        "-file_path",
        type=str,
        default="all",
        help="指定要转换的 .feather 文件路径,留空则转换当前目录下所有文件"
    )

    # 解析参数
    args = parser.parse_args()

    # 调用转换函数
    convert_feather_to_csv(args.file_path)

调用执行转换

python3 feather2csv.py
执行后所在目录下所有feather文件被转换,自动保存 cvs 在同目录下
python3 feather2csv.py -file_path your_file.csv
执行后指定文件被转换,自动保存 cvs文件在feather文件目录下


csv转feather

也是类似,贴代码:

import os
import pandas as pd
import argparse

def convert_csv_to_feather(file_name="all"):
    """
    将指定的 .csv 文件或当前目录下所有 .csv 文件转换为同名 .feather 文件。

    参数:
        file_name (str): .csv 文件名或 "all"。
                        如果为 "all"(默认值),则转换当前目录下所有 .csv 文件。
    """
    current_directory = os.getcwd()

    if file_name == "all":
        # 转换当前目录下所有 .csv 文件
        files = [f for f in os.listdir(current_directory) if f.endswith('.csv')]
        if not files:
            print("当前目录下没有 .csv 文件。")
            return

        print(f"找到 {len(files)} 个 .csv 文件,开始转换...")
        for file in files:
            file_path = os.path.join(current_directory, file)
            _convert_single_file(file_path)
        print("所有文件转换完成。")
    else:
        # 转换指定的文件
        if not file_name.endswith('.csv'):
            print("文件格式错误,请提供 .csv 文件。")
            return
        file_path = os.path.join(current_directory, file_name)
        if not os.path.isfile(file_path):
            print(f"文件 {file_name} 不存在。")
            return
        _convert_single_file(file_path)

def _convert_single_file(file_path):
    """
    将单个 .csv 文件转换为同名 .feather 文件。

    参数:
        file_path (str): .csv 文件的路径。
    """
    if not file_path.endswith('.csv'):
        print(f"跳过非 .csv 文件: {file_path}")
        return

    # 读取 .csv 文件
    try:
        df = pd.read_csv(file_path)
    except Exception as e:
        print(f"读取 .csv 文件时出错 ({file_path}): {e}")
        return

    # 构造 .feather 文件路径
    feather_path = os.path.splitext(file_path)[0] + '.feather'

    # 保存为 .feather 文件
    try:
        df.to_feather(feather_path)
        print(f"文件已成功转换并保存为: {feather_path}")
    except Exception as e:
        print(f"保存 .feather 文件时出错 ({file_path}): {e}")

if __name__ == "__main__":
    # 设置命令行参数解析
    parser = argparse.ArgumentParser(description="将 .csv 文件转换为 .feather 文件")
    parser.add_argument(
        "-file_path",
        type=str,
        default="all",
        help="指定要转换的 .csv 文件路径,留空则转换当前目录下所有文件"
    )

    # 解析参数
    args = parser.parse_args()

    # 调用转换函数
    convert_csv_to_feather(args.file_path)

python csv2feather.py
执行后所在目录下所有csv文件被转换,自动保存 feather 文件在同目录下
python csv2feather.py -file_path your_file.csv
执行后指定文件被转换,自动保存 feather文件在feather文件同目录下

feather格式简介:
http://www.coolpython.net/python_senior/third_module/feather-csv-compare.html

浏览量(11) | 此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据