python中的newline_python open函数newline用法

写这些文章主要是督促自己学习,过去两年时间,断断续续在学习linux、python以及机器学习方面的知识,东西看了很多,却没有实际动手操作,很多不明白的知识当时解决后没有记录,现在也忘得差不多了。为此,希望能在这里记录自己每天的学习轨迹,以后温习时也方便。

1.不同操作系统换行符不统一

linux:\n    windows:\r\n    mac:\r

2.open函数newline用法If csvfile is a file object, it should be opened with newline=''.

上述引用来自python 中关于csv标准库的介绍,对于这句话相当疑惑,因此,编写以下程序来辨别。

Case 1: The file is read and written with newline=''.csvfile=open('csvfile.csv','w',newline='')

writer=csv.writer(csvfile)

writer.writerow('a')

writer.writerow('b')

csvfile.close()

csvfile=open('csvfile.csv','r',newline='')

txtdata=csvfile.read()

csvfile.close()

最终,txtdata中的内容为'a\r\nb\r\n'。

Case 2: The file is written with newline='', but read without it.csvfile=open('csvfile.csv','w',newline='')

writer=csv.writer(csvfile)

writer.writerow('a')

writer.writerow('b')

csvfile.close()

csvfile=open('csvfile.csv','r')

txtdata=csvfile.read()

csvfile.close()

最终,txtdata中的内容为'a\r\nb\r\n'。

Case 3: The file is written without newline='', but read with it.csvfile=open('csvfile.csv','w')

writer=csv.writer(csvfile)

writer.writerow('a')

writer.writerow('b')

csvfile.close()

csvfile=open('csvfile.csv','r',newline='')

txtdata=csvfile.read()

csvfile.close()

最终,txtdata中的内容为'a\r\r\nb\r\r\n'。

Case 4: The file is read and written without newline=''.csvfile=open('csvfile.csv','w')

writer=csv.writer(csvfile)

writer.writerow('a')

writer.writerow('b')

csvfile.close()

csvfile=open('csvfile.csv','r')

txtdata=csvfile.read()

csvfile.close()

最终,txtdata中的内容为'a\n\nb\n\n'。

原因分析On input,if newlineis None, universal newlines mode is enabled. Lines in the input can end in '\n', '\r', or '\r\n', and these are translated into '\n' before being returned to the caller. If it is '', universal newline mode is enabled, but line endings are returned to the caller untranslated. If it has any of the other legal values, input lines are only terminated by the given string, and the line ending is returned to the caller untranslated.

On output,if newlineis None, any '\n' characters written are translated to the system default line separator,os.linesep. If newlineis '', no translation takes place. If new lineis any of the other legal values,any '\n' characters written are translated to the given string.

csv标准库中的writerow在写入文件时会加入'\r\n'作为换行符,if newline is '',换行符不会被转化而是直接输出,如case 1所示。

当写文件时newline='',程序写入'a\r\nb\r\n';读取文件时newline=None,universal newlines mode工作,换行符'\r\n'被翻译为'\n',如case 2所示。

当写文件时newline=None,csv先是将'a\r\nb\r\n'写入内存,再写入文件时,universal newlines mode工作,换行符'\n'被翻译为'\r\n',最终结果如case 3所示。

当写文件时newline=None,csv先是将'a\r\nb\r\n'写入内存,再写入文件时,universal newlines mode工作,换行符'\n'被翻译为'\r\n';读取文件时newline=None,universal newlines mode工作,换行符'\r'和'\r\n'被翻译为'\n',显示为'a\n\nb\n\n',如case 4所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想要AI优先?数据优先才行

戳蓝字“CSDN云计算”关注我们哦!来源 | forbes编译 | shawn责编 | Carol出品 | CSDN云计算(ID:CSDNcloud) 开展人工智能和机器学习项目的人很早就知道,机器学习项目不是应用程序开发项目。机器学习项目的大部分价值在…

Cloud Toolkit 部署应用到阿里云轻量应用服务器

在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前正在使用阿里云轻量应用服务器,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这些服务器上去?最新版…

springboot 排除 默认的loggback 和slf4j的依赖

文章目录异常现象:解决方案:总结异常现象: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/Program%20Files/JavaEclipse/repo/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.…

Node.js 应用故障排查手册 —— Node.js 性能平台使用指南

楔子 前一节中我们借助于 Chrome devtools 实现了对线上 Node.js 应用的 CPU/Memory 问题的排查定位,但是在实际生产实践中,大家会发现 Chrome devtools 更加偏向本地开发模式,因为显然 Chrome devtools 不会负责去生成分析问题所需要的 Dum…

for循环下标越界java_在for(int i=n;i2*n-1;i++)提示数组下标越界,为什么?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package huffman;public class HuffmanTree {private String charset;private TriElement[]huftree;public HuffmanTree(int[]weights){this.charset"";for(int i0;ithis.charset(char)(Ai);int nweights.length;this.hu…

懂编译真的可以为所欲为|不同前端框架下的代码转换

背景 整个前端领域在这几年迅速发展,前端框架也在不断变化,各团队选择的解决方案都不太一致,此外像小程序这种跨端场景和以往的研发方式也不太一样。在日常开发中往往会因为投放平台的不一样需要进行重新编码。前段时间我们需要在淘宝页面上…

面试稳了!网易资深工程师揭秘运维面经!

作者 | 阿文责编 | 伍杏玲出品 | 程序人生(ID:coder_life)受新型冠状病毒影响,很多企业都推迟了复工时间或集体开始远程办公,而一些企业本来计划春节过后开始春季招聘,但是受疫情影响已做出了调整&#xff…

java.lang.NumberFormatException: null

public static void main(String[] args) {String str null;try {int a Integer.parseInt(str);} catch (NumberFormatException e) {e.printStackTrace();}}

Pick!闲鱼亿级商品库中的秒级实时选品

一、业务背景 在电商运营工作中,营销活动是非常重要的部分,对用户增长和GMV都有很大帮助。对电商运营来说,如何从庞大的商品库中筛选出卖家优质商品并推送给有需要的买家购买是每时每刻都要思索的问题,而且这个过程需要尽可能快和…

java integer 值传递_在java中String,对象,Integer(包装类型的)关于引用传递仍是值传递...

场景:你们都知道基本的数据类型,int,float等等这种是按值传递的。可是对于String,对象,Integer是怎样传递呢?java原理知识:若是参数类型是原始类型,那么传过来的就是这个参数的一个副本&#xf…

一文看懂Microsoft Azure的十年变迁

来源 | forbes编译 | 火火酱责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)当微软前首席软件架构师雷奥兹(Ray Ozzie)在2008年的PDC大会上发布Windows Azure时,没人能预估这个软件平台将会为该公司和整个行业…

74HC595

脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP)&…

UI2Code智能生成Flutter代码——机器生成代码

背景 在《UI2CODE--整体设计》篇中,我们提到UI2Code工程的整体流程。前步图片分析之后,我们可以得到对应的DSL布局描述。利用DSL的资讯,结合IntelliJ Plugin介面工具,面向使用者提供生成对应Flutter代码。 本篇主要介绍我们如何…

初始化java工具失败,“初始化 Java 工具”期间发生了内部错误, java.lang.NullPointerException...

今天刚打开eclipse就报了这个错误,我怀疑是昨晚想关电脑的时候,关闭eclipse太快,没有等待工作空间保存就关了电脑的缘故错误如图:(图片来自下方链接博客,因为忘记截图了) 我百度后按照提示,删除了eclipse工…

Node.js 应用故障排查手册 —— 正确打开 Chrome devtools

楔子 前面的预备章节中我们大致了解了如何在服务器上的 Node.js 应用出现问题时,从常规的错误日志、系统/进程指标以及兜底的核心转储这些角度来排查问题。这样就引出了下一个问题:我们知道进程的 CPU/Memory 高,或者拿到了进程 Crash 后的核…

fastjson转换json字符串key的首字母小写变大写的解决办法

在对象的属性上添加 JSONField注解 public class UserSynInfo {/*** 用户Id* * 作为更新表的主键使用*/JSONField(name"UserId")private Long userId;/*** 用户昵称*/JSONField(name"NickName")private String nickName;/*** 用户的NetId*/JSONField(name…

钉钉流量暴增百倍,阿里云抗住了!

2月12日,钉钉已连续在苹果应用商店霸榜7天。记者采访获悉,春节以来,在家办公及在家上课的强需求,使得钉钉后台系统峰值流量暴增百倍。钉钉通过阿里云连续扩容10万台云服务器,成功抗住这一巨大的流量冲击! 2…

PB 级数据处理挑战,Kubernetes如何助力基因分析?

引言 James Watson 和 Francis Crick 于 1953 年发现了 DNA 的双螺旋结构,从此揭开了物种进化和遗传的神秘面纱,开启了人类对数字化遗传的认知,但是人类基因奥秘却是一点点被读懂的。 1956 年,一则癌症和染色体相关性的发现令整…

灵动标签 php脚本,帝国CMS灵动标签PHP代码实现标签无限嵌套的效果

本文将为您介绍的是帝国CMS灵动标签PHP代码实现标签无限嵌套的效果,具体操作方法请看下文:对于熟悉帝国CMS的朋友大都知道使用灵动标签进行特定信息的调用,而灵动标签的强大功能远非如此。灵动标签的PHP函数是:sys_ReturnEcmsLoopBq(栏目ID/专题ID,显示条…

Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本

新版发布 近日,轻量级开源 Web 服务器 Tengine 发布了2.3.0版本,新增如下特性: ngx_http_proxy_connect_module [1] ,该模块让 Tengine 可以用于正向代理场景,支持对 CONNECT 方法请求的处理;HTTP2 Serve…