linux下的CSV文件操作

2023-05-16

先介绍一下什么是csv文件,这是一种简单的文本文件,也被称为逗号分隔值文件。

主要是用于存储简单的数据,下面在weindows下用UE简单生成一下文件。


然后用excel打开


这就是一个简单的csv文件,每个字符都是一个ANSI码,图中的第一行,1,2,3,4,5,7。

1~7每一个都是一个ANSI码,一个逗号也是ANSI码。

第二行的12,13,434,45,56,747,“12”存储的是两个ANSI码,而“747”则存储了三个ANSI码,他们之间以逗号分隔。

类似的,第三行的“a”是一个ANSI码,“cd”是两个ANSI码。

也就是说,无论每一个逗号分隔的一个数值是多大,每一个值都是一个字符,如果换个理解方式就是,csv文件是一个很长很长的字符串。

然后是文件的大小,这个文件的大小是49字节。


通过直接数字符的方式,发现只有45个字符,包括所有逗号,多出了4个字节。

多出的四个字节在UE中看不到,这其实是windows独有的换行符“\r\n”,占了两个字符,45加上第一行和第二行的换行符就得到了49个字节的大小。

然后是关于文件名,windows默认文件名长256个字节,大小是固定的,但是不会再属性里面体现出来。

备注:linux的换行符是“\n”,占一个字符。


好了,关于csv文件的介绍到此结束。

下面是关于文件操作介绍,主要用到stdio.h这个文件头,这个是标准输入输出的一个头包含文件,为什么会将文件的操作放在标准输入输出的头包含文件里面,而不是重新创建一个file.h,按照《c语言程序设计——现代方法》的说法,所有的输入输出都是一种流,输入称为输入流,输出称为输出流,文件的读操作称为输入流,写操作称为输出流,就像往屏幕上打印东西称为输出流,键盘输入称为输入流,一切与系统的交互,本质上都是一种输入输出的行为。

然后是打开linux,用vim生成一个test.c文件,然后键入如下代码

#include "stdio.h"

int main(void)
{
	FILE *f0;
	char array[] = "1,2,3,4,5,7\n12,13,434,56,747\na,b,cd,efg,h,ij";
	char array0[100];
	
	if(NULL == (f0=fopen("/home/ma/TEST/ma.csv","a")))//打开一个ma.csv文件,
	{                                                 //如果不存在就创建
		printf("can't  not open file\n");
	}
	else
	{
		printf("Created file succeed!\n");//创建成功就输出这句话
		fwrite(array,sizeof(array),1,f0);//给文件写入array数组
		fread(array0,sizeof(array),1,f0);//然后将文件内容读取到array0中
		printf("%s\n",array0);//输出文件内容
		fclose(f0);//关闭文件
	}
}

在linux下的操作截图如下



先用gcc 编译test.c,生成a.out,然后强制执行a.out,这里有个小细节,在linux下,生成的a.out文件一般用户是没有执行权限的,如果不限输入sudo的话,需要对当前的文件夹获取写入权限,使用chmod这个命令。执行a.out之后,生成了一个ma.csv文件,再说一件事,在linux下,一切都是文件,而文件名仅仅是一个标识符,"*.csv"是没有意义的,不要在意拓展名是啥,这仅仅起到一个关联执行程序的意义,对真实的文件内容没有啥关系。


好了,这是一个简单的文件操作入门,具体的文件操作函数我就不介绍了,请参考 《c语言程序设计——从入门到放弃》。


写于2017年5月27日 

深圳





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下的CSV文件操作 的相关文章

  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • 如何在 T-SQL 中将 CSV 转换为记录集?

    在我的存储过程中 我传递一个过滤器 使用 WHERE Column IN 子句 作为参数 参数值以 CSV 形式给出 将此 CSV 转换为记录集的最佳方法是什么 例子 SELECT FROM Employee WHERE Name IN J
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • 对 CSV 文件中的列进行分组并连接另一列的值

    我刚刚开始使用 PowerShell 在任何地方都找不到这个问题的答案 尝试编写一个脚本来导入 CSV 文件并搜索该文件以查看是否有任何名称相同 如果名称相同 我想将所有这些值写在同一行上 并且只显示名称一次 例如 Name Number
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • Authentication认证和Authorization授权的作用

    认证 Authentication xff1a 你是谁 授权 Authorization xff1a 你有权限干什么 认证意味着确认自己的身份 xff0c 而授权意味着授予对系统的访问权限 简单来说 xff0c 认证是验证身份的过程 xff
  • 51单片机串口通信的原理及使用方法(附串口收发数据例程代码)

    温馨提示 xff1a 本篇文章详细介绍了串口的原理及使用方法 xff0c 涉及的内容较多 xff0c 但也较为全面 xff0c 学者若想充分掌握串口通信的原理和具体使用方法 xff08 部分限于51单片机 xff09 xff0c 请静下心来
  • RoboMaster大疆开发板C型入门学习(1)配置加流水灯(循环亮灯

    cubeMX新建工程 xff0c 这里我们假设已经安装好了cubeMX 我们本次使用Clion进行相关操作 在这里我们使用STM32F407IGHx芯片 在System Core下选择RCC选项 xff0c 在RCC mode and Co
  • 如何使用cvx工具箱求解凸优化问题呢?

    以下是一个简单的MATLAB求解凸优化问题的案例 xff0c 使用cvx 工具箱求解 xff1a 1 导入cvx工具箱 addpath 39 cvx 39 2 定义问题 n 61 2 变量数量 x 61 sym 39 x 39 n 1 定义
  • 基于stm32单片机智能导盲拐杖源程序Proteus仿真设计

    功能介绍 xff1a 采用stm32单片机作为主控CPU xff0c 采用srf05超声波模块测量障碍物距离 xff0c LCD1602显示屏显示当前的障碍物距离 xff0c 通过传感器测量障碍物的距离的远近来进行相关报警 xff0c 距离
  • virtualbox上安装ubuntu20.04清华源镜像

    一 下载Ubuntu镜像文件 这里我选择国内清华源下载ubuntu镜像文件 步骤一 xff1a 清华源下载地址 xff1a Index of ubuntu releases 20 04 清华大学开源软件镜像站 Tsinghua Open S
  • 计算机视觉(一):初识OpenCV,更好更快掌握OpenCV

    计算机视觉 xff08 一 xff09 xff1a 初识OpenCV 近几个月 xff0c 也是一直在寻找自己以后的方向 xff0c 一直在迷茫中 xff0c 但也在不断得探索着 觉得自己最感兴趣的还是计算机技术这一块 xff0c 尤其是计
  • 虚拟机扩容(超详细实测好用步骤)

    第一步 xff1a 把虚拟机关机 第二步 xff1a 点击编辑虚拟机设置 xff0c 选择硬盘 xff0c 点击扩展 xff0c 如下图 xff1a 第三步 xff1a 输入你现在想要的磁盘大小 xff08 如果你原来是200G xff0c
  • 结构体的对齐规则(结构体的计算)

    1 第一个成员在与结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 对齐数 61 编译器默认的一个对齐数 与 该成员大小的较小值 3 结构体总大小为最大对齐数 xff08 每个
  • hostapd 配置项解析

    hostapd 配置项解析 1 interface2 wps state3 hw mode4 channel5 beacon int6 max num sta 1 interface 一般默认interface 61 wlan0 注 xff
  • 滑动窗口算法总结

    算法目的 滑动窗口法 xff0c 也叫尺取法 xff08 可能也不一定相等 xff0c 大概就是这样 61 61 xff09 xff0c 可以用来解决一些查找满足一定条件的连续区间的性质 xff08 长度等 xff09 的问题 由于区间连续
  • linux软链接的创建、删除和更新

    大家都知道 xff0c 有的时候 xff0c 我们为了省下空间 xff0c 都会使用链接的方式来进行引用操作 同样的 xff0c 在系统级别也有 在Windows系列中 xff0c 我们称其为快捷方式 xff0c 在Linux中我们称其为链
  • 进程、线程、多进程、多线程的优缺点和区别

    进程 xff1a 是并发执行的程序在执行过程中分配和管理资源的基本单位 xff0c 是一个动态概念 xff0c 竞争计算机系统资源的基本单位 线程 xff1a 是进程的一个执行单元 xff0c 是进程内科调度实体 比进程更小的独立运行的基本
  • Postman 汉化(Postman中文版)

    1 首先从官网下载postMan安装包 postman官网下载地址 Download Postman Get Started for Free 2 下载postMan 汉化包 app zip postman汉化包 Releases hlmd
  • UDP的客户端和服务器端的实例(VC6.0实现)

    服务器端程序 xff1a UdpServer cpp Defines the entry point for the console application include 34 stdafx h 34 include lt stdio h
  • STM32中关于串口中断的调试(不断进入发送中断的原因)

    说来惭愧 xff0c 前日在调试stm32f10系列的单片机的时候 xff0c 想做一个关于串口发送的状态机 xff0c 每隔100毫秒发送一次命令 没有用DMA xff0c 就是想单纯的使用发送中断来数据 xff0c 结果在调试的时候一直
  • Psoc Creator 入门——空工程的建立

    最近在做psoc 4000芯片的开发 xff0c 现在简单的说说怎么利用psoc creator进行开发 首先 xff0c 安装psoc creator xff0c 我使用的版本是4 0 安装过程省略 xff0c 赛普拉斯官网有下载链接 x
  • mbedtls使用openssl生成的自签名证书进行TLS实验

    目录 1 使用openssl生成自签名证书2 VS2013编译mbedtls3 mbdtls默认对证书的要求4 mbdtls测试例子详解5 运行测试程序 1 使用openssl生成自签名证书 openssl是一个安全套接字层密码库 xff0
  • IIC的通信波形分析

    关于IIC xff0c 不解释它的历史了 xff0c 有兴趣自己去百度看看 xff0c 本文的图片是由周立功的LAB6021逻辑分析仪抓取的 xff0c 通信的波形是抓取的cypress的psoc 4000芯片得到的 最近项目需要用到触摸I
  • linux下的CSV文件操作

    先介绍一下什么是csv文件 xff0c 这是一种简单的文本文件 xff0c 也被称为逗号分隔值文件 主要是用于存储简单的数据 xff0c 下面在weindows下用UE简单生成一下文件 然后用excel打开 这就是一个简单的csv文件 xf