CSV – 在 Python 中处理本地和远程文件

csv - 在 python 中处理本地和远程文件

编码员们大家好!

本文介绍了一个开源工具,它能够处理本地和远程 csv 文件、加载和打印信息,然后将列映射到 django 类型。当数据集变大、excel不支持自定义报告或通过数据表进行完整数据操作时,通常需要处理csv文件,并且需要api。
当前的功能列表可以进一步扩展,以将 csv 文件映射到数据库表/模型并完全生成仪表板 web 应用程序。

源代码:appseed 服务的 csv 处理器部分(开源)

在开始讲解代码和用法之前,我们先总结一下工具的特点:

加载本地和远程文件打印值打印检测到的列类型将映射类型打印到 django 模型

按照 readme 中的说明克隆项目源并使其可用后,可以通过 cli 执行 csv 解析器。安装完成后,我们可以使用以下一行代码调用 cvs 处理器:

$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect.json

该工具执行以下任务:

验证输入找到 csv 文件(如果找不到则错误退出)加载信息并检测列类型检测 django 列类型 打印前 10 行

同样可以应用于本地和远程文件。例如,我们可以通过运行这个单行代码来分析臭名昭著的 titanic.cvs:

$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect_distant.json# output> processing .mediatool_inspectcsv_inspect_distant.json    |-- file: https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv    |-- type: csvfield        csv type    django types-----------  ----------  ------------------------------------------passengerid  int64       models.integerfield(blank=true, null=true)survived     int64       models.integerfield(blank=true, null=true)pclass       int64       models.integerfield(blank=true, null=true)name         object      models.textfield(blank=true, null=true)sex          object      models.textfield(blank=true, null=true)age          float64     models.floatfield(blank=true, null=true)sibsp        int64       models.integerfield(blank=true, null=true)parch        int64       models.integerfield(blank=true, null=true)ticket       object      models.textfield(blank=true, null=true)fare         float64     models.floatfield(blank=true, null=true)cabin        object      models.textfield(blank=true, null=true)embarked     object      models.textfield(blank=true, null=true)[1] - passengerid,survived,pclass,name,sex,age,sibsp,parch,ticket,fare,cabin,embarked[2] - 1,0,3,"braund, mr. owen harris",male,22,1,0,a/5 21171,7.25,,s[3] - 2,1,1,"cumings, mrs. john bradley (florence briggs thayer)",female,38,1,0,pc 17599,71.2833,c85,c[4] - 3,1,3,"heikkinen, miss. laina",female,26,0,0,ston/o2. 3101282,7.925,,s[5] - 4,1,1,"futrelle, mrs. jacques heath (lily may peel)",female,35,1,0,113803,53.1,c123,s[6] - 5,0,3,"allen, mr. william henry",male,35,0,0,373450,8.05,,s[7] - 6,0,3,"moran, mr. james",male,,0,0,330877,8.4583,,q[8] - 7,0,1,"mccarthy, mr. timothy j",male,54,0,0,17463,51.8625,e46,s[9] - 8,0,3,"palsson, master. gosta leonard",male,2,3,1,349909,21.075,,s[10] - 9,1,3,"johnson, mrs. oscar w (elisabeth vilhelmina berg)",female,27,0,2,347742,11.1333,,s... (truncated output)  

以下是该工具的相关部分:

立即学习“Python免费学习笔记(深入)”;

加载信息并事先检查源是本地还是远程

    print( '> processing ' + arg_json )    print( '    |-- file: ' + json_data['source'] )    print( '    |-- type: ' + json_data['type'  ] )    print( 'n')    tmp_file_path = none     if 'http' in json_data['source']:        url = json_data['source']        r = requests.get(url)        tmp_file = h_random_ascii( 8 ) + '.csv'        tmp_file_path = os.path.join( dir_tmp, tmp_file )        if not file_write(tmp_file_path, r.text ):            return        json_data['source'] = tmp_file_path    else:            if not file_exists( json_data['source'] ):            print( ' > err loading source: ' + json_data['source'] )                        return    csv_types = parse_csv( json_data['source'] )

分析标头并将检测到的类型映射到 django 类型。

对于表格视图,使用 tabulate library:

    csv_types = parse_csv( json_data['source'] )    #pprint.pp ( csv_types )    table_headers = ['field', 'csv type', 'django types']    table_rows    = []    for t in csv_types:        t_type        = csv_types[t]['type']        t_type_django = django_fields[ t_type ]        table_rows.append( [t, t_type, t_type_django] )    print(tabulate(table_rows, table_headers))

最后一步是打印csv数据:

    csv_data = load_csv_data( json_data['source'] )    idx = 0    for l in csv_data:        idx += 1        print( '['+str(idx)+'] - ' + str(l) )          # truncate output ..        if idx == 10:            print( ' ... (truncated output) ' )             break 

此时,代码为我们提供了获取 csv 信息、数据类型以及 django 对应的数据类型的权限。该映射可以轻松扩展为任何框架,如 flask、express 或 nextjs。

django 的类型映射是这样的:

# Pandas Typedjango_fields = {    'int'           : 'models.IntegerField(blank=True, null=True)',    'integer'       : 'models.IntegerField(blank=True, null=True)',    'string'        : "models.TextField(blank=True, null=True)",    'string_unique' : "models.TextField(blank=True, null=False, unique=True)",    'object'        : "models.TextField(blank=True, null=True)",    'object_unique' : "models.TextField(blank=True, null=False, unique=True)",    'int64'         : 'models.IntegerField(blank=True, null=True)',    'float64'       : 'models.FloatField(blank=True, null=True)',    'bool'          : 'models.BooleanField(null=True)',}

此工具正在积极开发中,以下是后续步骤:

将该工具连接到更多数据源,例如远程/本地数据库(sqlite、mysql、pgsql)、json 为任何框架生成模型:fastapi、flask、express、nextjs在顶部生成安全的 api 使用 tailwind/bootstrap 生成服务器端分页数据表进行样式化

感谢您的阅读!

对于那些有兴趣做出贡献的人,请随时加入新的 appseed 平台并在 discord 上与社区联系:

appseed – 面向开发者的开源平台appseed 社区 – 3k+ discord 成员

以上就是CSV – 在 Python 中处理本地和远程文件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349516.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
使用 FastAPI 构建 Todo API 的部分:分步指南
上一篇 2025年12月13日 12:54:08
使用 OpenAI Assistants API 创建控制台机器人所需的帮助
下一篇 2025年12月13日 12:54:22

相关推荐

  • 解决复选框数据无法插入数据库的问题:系统化调试指南

    本文旨在解决Web应用中复选框数据无法成功插入数据库的问题。我们将深入探讨常见错误原因,并提供一套系统化的调试策略,包括利用XDebug进行代码追踪、检查PHP错误日志、直接验证数据库状态以及排查数据库连接配置,确保开发者能够高效定位并解决数据插入失败的根本原因。 理解问题:复选框数据插入失败的常见…

    2026年10月2日
    000
  • sublime写完代码怎么运行

    sublime写完代码怎么运行sublime写完代码怎么运行sublime写完代码怎么运行sublime写完代码怎么运行

    在 Sublime Text 中运行代码的方法取决于代码语言,可通过以下方法实现:Python:使用 SublimeREPL 插件或 Cmd/Ctrl + B。JavaScript/Node.js:使用 SublimeREPL 插件或 Cmd/Ctrl + B。其他语言:安装特定插件以获得运行代码功…

    2026年10月2日 • 用户投稿
    000
  • Gateway电脑修复蓝屏代码0x00000019的完整步骤。

    Gateway电脑修复蓝屏代码0x00000019的完整步骤。Gateway电脑修复蓝屏代码0x00000019的完整步骤。Gateway电脑修复蓝屏代码0x00000019的完整步骤。Gateway电脑修复蓝屏代码0x00000019的完整步骤。

    %ignore_a_1%错误0x00000019通常由内存或硬盘问题引起,需依次排查:首先重新安装并清洁内存条,确保接触良好;其次运行Windows内存诊断工具检测硬件错误;接着更新或回滚驱动程序,特别是存储与显卡驱动;然后使用SFC和DISM命令修复系统文件;最后通过chkdsk及硬盘厂商工具检查…

    2026年10月2日 • 用户投稿
    000
  • 豆包AI编程助手用法 豆包AI代码编写教程

    豆包AI编程助手用法 豆包AI代码编写教程豆包AI编程助手用法 豆包AI代码编写教程豆包AI编程助手用法 豆包AI代码编写教程豆包AI编程助手用法 豆包AI代码编写教程

    豆包ai编程助手的核心使用方法包括代码补全、错误排查、代码优化和学习辅助。在代码补全时,应明确输入意图并配合注释提示ai生成准确代码;遇到报错可将完整错误信息交给ai分析原因;已有代码可通过ai建议优化为更高效写法;还可用于实时学习语法和库用法。关键在于清晰表达需求以获得有效帮助。 ☞☞☞AI 智能…

    2026年10月2日 • 用户投稿
    100
  • OpenAI 发布新编程模型 GPT‑5‑Codex,优化 Agentic Coding 能力

    OpenAI 发布新编程模型 GPT‑5‑Codex,优化 Agentic Coding 能力OpenAI 发布新编程模型 GPT‑5‑Codex,优化 Agentic Coding 能力OpenAI 发布新编程模型 GPT‑5‑Codex,优化 Agentic Coding 能力OpenAI 发布新编程模型 GPT‑5‑Codex,优化 Agentic Coding 能力

    openai 今日凌晨推出全新升级的新模型 gpt‑5‑codex,这是其在gpt-5基础上专门为软件工程优化的模型版本,进一步提升了codex中的智能体编程(agentic coding)能力。 官方表示,该版本在代码审查、功能开发、大规模重构等场景中表现显著提升,并且“在测试中可连续独立工作超过…

    2026年10月2日 • 用户投稿
    000
  • 用豆包AI生成Python文本分析代码

    用豆包AI生成Python文本分析代码用豆包AI生成Python文本分析代码用豆包AI生成Python文本分析代码用豆包AI生成Python文本分析代码

    想用豆包ai写python文本分析代码的关键在于给出清晰指令。1. 首先明确分析内容,如处理中英文、分词、词频统计或情感分析,并具体说明是否去停用词等细节;2. 可让豆包推荐适用库和结构,如jieba、collections.counter、re或textblob,并提供基本代码框架;3. 也可直接…

    2026年10月2日 • 用户投稿
    100
  • 反转字符串绕杀软

    反转字符串绕杀软反转字符串绕杀软反转字符串绕杀软反转字符串绕杀软

    在github有一个ssi的项目,项目地址如下:https://github.com/dimopouloselias/simpleshellcodeinjector/他可以实现shellcode的远程加载(十六进制),当然ldrakura也曾经搞过类似的项目(我偷电瓶车养你啊),当时还是一次项目时绕…

    2026年10月2日 • 用户投稿
    000
  • 编程新霸!微软重磅推出命令行新工具,数小时冲击GitHub榜首

    编程新霸!微软重磅推出命令行新工具,数小时冲击GitHub榜首编程新霸!微软重磅推出命令行新工具,数小时冲击GitHub榜首编程新霸!微软重磅推出命令行新工具,数小时冲击GitHub榜首编程新霸!微软重磅推出命令行新工具,数小时冲击GitHub榜首

    微软推出令人耳目一新的命令行工具,迅速登顶github趋势榜首! 这不再是你记忆中的传统命令行。 许多用户对Windows系统上黑底白字的命令行界面感到厌倦: 然而,在昨天的微软全球开发者大会 Build 2019上,微软推出的Windows Terminal引起了全场的惊叹——命令行界面竟然可以如…

    2026年10月2日 • 用户投稿
    000
  • 阿里通义实验室发布端到端语音识别大模型 FunAudio-ASR

    阿里通义实验室发布端到端语音识别大模型 FunAudio-ASR阿里通义实验室发布端到端语音识别大模型 FunAudio-ASR阿里通义实验室发布端到端语音识别大模型 FunAudio-ASR阿里通义实验室发布端到端语音识别大模型 FunAudio-ASR

    阿里巴巴通义实验室推出了全新的端到端语音识别大模型 funaudio-asr。该模型引入创新的 context 模块,显著提升了在高噪声环境下的识别稳定性,将幻觉率从 78.5% 大幅下降至 10.7%,降幅接近 70%。 FunAudio-ASR 基于数千万小时的真实音频数据训练而成,并深度融合了…

    2026年10月2日 • 用户投稿
    200
  • PHP操作MySQL数据库时与Elasticsearch集成的应用

    在php中操作mysql数据库并与elasticsearch集成可以通过以下步骤实现:1. 使用mysqli或pdo扩展连接mysql数据库进行数据操作。2. 利用elasticsearch的php客户端库进行数据索引和搜索。3. 通过定时任务或触发器实现mysql数据的实时同步到elasticse…

    2026年10月2日
    000
  • sublime如何调用input函数

    sublime如何调用input函数sublime如何调用input函数sublime如何调用input函数sublime如何调用input函数

    在 Sublime Text 中调用 input() 函数:安装 Python 插件。在 Python 文件中使用语法 “user_input = input(“提示信息:”)” 调用 input() 函数,其中 “提示信息” …

    2026年10月2日 • 用户投稿
    100
  • 掌握SQL中JOIN、WHERE和ORDER BY的组合使用技巧

    本文详细阐述了在SQL查询中同时使用JOIN、WHERE和ORDER BY子句的正确语法和逻辑顺序。重点强调了ON子句应紧随其关联的JOIN操作之后,以及WHERE子句必须位于ORDER BY子句之前,以确保查询的准确性和效率。通过具体示例,帮助读者构建结构清晰、功能完善的SQL查询语句。 SQL查…

    2026年10月2日
    100
  • sublime怎么汉化

    sublime怎么汉化sublime怎么汉化sublime怎么汉化sublime怎么汉化

    Sublime Text 可以通过以下步骤汉化:1. 下载汉化包;2. 安装汉化包;3. 重启 Sublime Text;4. 设置默认语言(可选);5. 校验汉化。 如何汉化 Sublime Text 步骤 1:下载汉化包 访问以下链接,下载汉化包:https://github.com/Subli…

    2026年10月2日 • 用户投稿
    100
  • 数毛社评《明末》主机性能表现:XSS版本明显落后

    数毛社评《明末》主机性能表现:XSS版本明显落后数毛社评《明末》主机性能表现:XSS版本明显落后数毛社评《明末》主机性能表现:XSS版本明显落后数毛社评《明末》主机性能表现:XSS版本明显落后

    日前,知名技术媒体digital foundry(数毛社)发布了国产虚幻5引擎打造的类魂动作游戏《明末:渊虚之羽》的技术评测(基于早期测试版本,非最新1.5版),重点解析了该作在ps5、ps5 pro以及xbox series x|s主机上的性能表现。 视频: 分析指出,《明末:渊虚之羽》虽在玩法上…

    2026年10月2日 • 用户投稿
    200
  • 将 DSA 密钥库证书转换为 RSA 的替代方案

    将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案

    本文档旨在提供将使用 DSA 算法生成的密钥库证书迁移到 RSA 算法的替代方案,以解决在高版本 Java 环境下(如 Java 11 及以上)不再支持 DSA 算法的问题。由于 DSA 证书无法直接转换为 RSA 证书,本文将探讨通过创建新的 RSA 密钥库并重新签名应用来解决此问题的方法。 由于…

    2026年10月2日 • 用户投稿
    100
  • 在Android应用中捕获并分享MPAndroidChart图表截图

    在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图

    本教程详细介绍了如何在Android应用中,利用MPAndroidChart库的图表功能,高效地捕获BarChart(或其他支持的图表)的屏幕截图,并无需将图片永久保存到本地存储,即可通过Android的Intent机制将其无缝分享至其他社交媒体或应用。文章涵盖了从获取图表Bitmap到构建分享In…

    2026年10月2日 • 用户投稿
    500
  • 如何在MPAndroidChart中捕获图表截图并使用Intent进行分享

    如何在MPAndroidChart中捕获图表截图并使用Intent进行分享如何在MPAndroidChart中捕获图表截图并使用Intent进行分享如何在MPAndroidChart中捕获图表截图并使用Intent进行分享如何在MPAndroidChart中捕获图表截图并使用Intent进行分享

    本文详细介绍了如何在Android应用中,利用PhilJay / MPAndroidChart库,高效地捕获BarChart(或其他图表)的屏幕截图,并无需将图片永久保存到设备存储,即可通过Android的Intent机制将其分享至其他社交媒体或应用。教程涵盖了获取图表位图、生成临时URI以及构建分…

    2026年10月2日 • 用户投稿
    200
  • sublime如何运行代码没反应

    sublime如何运行代码没反应sublime如何运行代码没反应sublime如何运行代码没反应sublime如何运行代码没反应

    代码在 Sublime 中无响应的原因可能是代码语法错误、缺少依赖项、配置错误、系统资源不足或网络连接问题。解决方案包括检查语法、安装依赖项、检查配置、检查系统资源、检查网络连接、重启 Sublime、使用调试器或寻求帮助。 Sublime 中代码无响应:原因和解决方案 Sublime Text 是…

    2026年10月2日 • 用户投稿
    200
  • Symfony 5与Mercure实时通信集成:配置、启动与常见访问问题排查

    本文详细介绍了如何在Symfony 5项目中集成Mercure实时通信服务。内容涵盖Mercure Hub的安装、环境变量配置、服务器启动命令,并着重解决了初次配置时常见的Mercure Hub访问问题,强调了URL端口一致性的重要性,确保开发者能顺利构建实时应用。 Mercure实时通信服务概述 …

    2026年10月2日
    200
  • sublime怎么运行代码快捷键

    sublime怎么运行代码快捷键sublime怎么运行代码快捷键sublime怎么运行代码快捷键sublime怎么运行代码快捷键

    Sublime 中运行代码的快捷键为 Ctrl + B(Windows/Linux)或 Cmd + B(macOS)。此快捷键执行下列操作:搜索并执行当前文件中的指定命令(如果有)。尝试在所有文件中搜索命令,并在找到后执行。允许自定义特定语言或文件的运行命令。 Sublime 中运行代码的快捷键 快…

    2026年10月2日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信