python 读写文件

https://www.cnblogs.com/evablogs/p/6725242.html

 

文件的打开读写关闭(文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源)

1
2
3
4
5
6
7
8
9
#写文件
with open(r'D:\Test\1.txt','w') as f:           #with比<strong>try....finally</strong>更加简洁,with自动调用close()方法;open(文件路径,读取方式),r:只读,默认打开方式
      f.write('Hello,world')                    #write(str):写入字符串;writelines():一次性写入多行
#读文件
with open(r'D:\Test\1.txt','r') as f:           #r:读
       print f.read()         #read([size]),size可选,指定读取的文件大小,单位是字节,默认读取全部,readline():读取一行;readlines([size]),读取返回一个列表,占内存空间
>>> Hello,world
1
2
3
4
5
6
>>> try:
       f=open(r'D:\Test',r)
       print f.read()
    finally:
        if f:
            f.close()

文件打开方式:

+:同时读写,即可读又可写,边写边读、边读边写

方式说明注意是否清空文件是否覆盖文件内容文件不存在是否创建新文件
‘r’只读文件不存在时报错--
'r+'读写可读可写,文件不存在报错,写入时只覆盖写入文件的大小
'w'只写可写方式打开,不可读-
'w+'读写可读可写-
'a'追加

文件已有的内容后追加内容,不可读

'a+'追加以及读可读可追加,写入时,添加到文章末尾,并且指针位于添加后的末尾,所以再次读取会乱码,因为指针指向末尾,读取时实际上是跳过实际要读取的内容,去读取磁盘缓存的上一个文件缓存的内容,所以是乱码
'rb','wb','ab','rb','wb+','ab+':二进制方式打开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> with open(r'D:\Test\a.txt','w') as f:
         f.write('Hello,world')
>>>with open(r'D:\Test\a.txt','r') as f:
        print f.read()
>>> Hello,world                                        #w写入
>>> with open(r'D:\Test\a.txt','a') as f:              #追加,在后面添加内容
        f.write('Hello,world')
>>> with open(r'D:\Test\a.txt','r') as f:
        print f.read()
>>> Hello,worldHello,world
>>> with open(r'D:\Test\a.txt','w') as f:              #清空前面的内容重新写入
         f.write('Hello,world')
>>> Hello,world

有关文件可能读取出乱码的问题:

一:检查下文件的指针的指向,在写完之后,必须要seek(0),把文件指针重新指向文件开头,然后再读,否则就会从缓冲区读取一大堆乱码

二:文件写入的操作先是在缓存中进行的,只有文件关闭才真正写入,因为read()似乎还是优先读取内存缓冲区。

以上的两个问题涉及到文件指针的移动seek()以及刷新缓存flush()

1
2
3
4
5
6
7
8
9
>>> f=open(r'D:\Test\a.txt','w')
>>> f.write('kkkkkkkk')                    #此时文件的指针=8,8个字节
>>> f.flush()                              #刷新缓存,缓存中的内容刷新变成:kkkkkkkk[EOF],内容为空时:[EOF]
>>> f.read()                               #此时的指针在文件尾[EOF]上,则输出的是''
''
>>> f.seek(0)                              #将指针指向文件头,再进行文件内容的读取,就不会产生乱码
>>> f.read()
'kkkkkkkk'
>>> f.close()

 

 产生乱码例子:

1
2
3
4
>>> f=open(r'D:\Test\a.txt','w+')
>>> f.write('uuuuuuuuuuuuuuuu')
>>> f.read()                             #没有刷新缓存且将指针指向文件头,读取的是缓存中的其他乱码内容
'\x00\x06\x00\x00\x00@\x00\x00\x00sb\x00\x00\x00d\x00\x00Z\x00\x00d\x01\x00d\.............................

转载于:https://www.cnblogs.com/yuer20180726/p/10790332.html

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

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

相关文章

RUNOOB python练习题29

用来练手的python练习题其29&#xff0c;原题链接:python练习实例29 题干 : 给一个不多于5位的正整数&#xff0c;要求&#xff1a;一、求它是几位数&#xff0c;二、逆序打印出各位数字。 实际这个正整数无论位数&#xff0c;在python3中都很容易实现。源代码如下: def ent…

定时任务(Spring Cloud Task)

引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.sprin…

P3357 最长k可重线段集问题 网络流

P3357 最长k可重线段集问题 题目描述 给定平面 x-O-yx−O−y 上 nn 个开线段组成的集合 II&#xff0c;和一个正整数 kk 。试设计一个算法&#xff0c;从开线段集合 II 中选取出开线段集合 S\subseteq IS⊆I ,使得在 xx 轴上的任何一点 pp&#xff0c;SS 中与直线 xpxp 相交的开…

服务被人当肉鸡了,叫一路赚钱 xig

网上看了一下&#xff0c;说有专门人研究服务 个人怀疑是阿里云内部人干的&#xff0c;因为买了服务器后&#xff0c;没有安装对外使用的地址性质的网站&#xff0c;IP开通了之后只有阿里的人知道&#xff0c;上面还有阿里云盾。 看了下进程地址&#xff0c;上面的启动命令 x…

RUNOOB python练习题30 回文数

用来练手的python练习题 30。原题链接:python练习实例30 题干 : 一个5位数&#xff0c;判断它是不是回文数。即12321是回文数&#xff0c;个位与万位相同&#xff0c;十位与千位相同。 与上一个例题类似&#xff0c;判断一个数是不是回文数&#xff0c;我们使用字符串类型更加…

高并发与负载均衡-keepalived-概念介绍

keepalived是用户空间的程序&#xff0c;这个程序会同时在主的lvs和备用的lvs启动 转载于:https://www.cnblogs.com/LXL616/p/10793790.html

asp.net2.0跨域问题

什么叫跨域&#xff1f; 简单理解就是不同服务器&#xff0c;不同域名之间的访问。 1 如何设置asp.net web程序的跨域&#xff1f; 在web.config中添加如下代码 1 <system.webServer> <httpProtocol> <customHeaders> <add name&qu…

RUNOOB python练习题31 根据已输入的字符判断星期几

用来练手的python练习题31&#xff0c; 原题链接 : python练习实例31 题干 : 请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。 一个条件语句练习题&#xff0c;非常简单了可以说&#xff0c;就是把所有的条件都…

解决FTPClient上传文件为空,显示0字节

JAVA使用FTPClient上传文件时总是为空&#xff0c;而使用FileZilla客户端时却不会。 后来查了下资料&#xff0c;FTP服务器有被动模式和主动模式。&#xff08;具体查另外资料&#xff09; 在JAVA中将FTPClient设置为被动模式即可解决问题。 import org.apache.commons.net.f…

软件工程——结对编程第二次作业

目录 1. 题目及要求2. 功能的设计3. GUI&#xff08;图形用户界面&#xff09;的设计4. 容错机制的设计4.1 选择运算符的容错处理4.2 最大值和题目数输入的容错处理4.3 打开文件容错处理4.4 打印的容错处理5. 程序的运行效果6. 对领航员的评价7. 总结本次作业所开发的程序已上传…

RUNOOB python练习题 32 列表的中括号符号小tips

用来练手的python练习题&#xff0c;原题链接: python练习实例32 题干: 按相反的顺序输出列表的值 拿到题目首先写下如下代码: a [1,2,3,4] for i in range(len(a)):print(a[len(a)-i-1])输出结果如下: 使用一个简单的循环就可以完成这个操作。但其实python有利用中括号操…

redis启动后出现WARNING you have Transparent Huge Pages (THP) support enabled in your kernel问题...

问题描述&#xff1a;启动redis后出现&#xff1a;WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command echo never > /sys/kernel/mm/trans…

Anaconda安装第三方包(whl文件)

先说下环境 Anaconda 对应Python3.5的版本 win7,64位系统。 step1&#xff1a;下载whl文件 step2&#xff1a;打开‘Anaconda Command Prompt‘&#xff0c; 如下图&#xff1a; step3&#xff1a;命令行窗口pip安装&#xff0c;代码如下&#xff1a; pip install 路径whl…

RUNOOB python练习题33 使用join方法实现用逗号分隔列表

用来练手的python练习题&#xff0c;原题链接:python练习实例33 题干: 按逗号分隔列表 用逗号分隔列表&#xff0c;我们就想到了join方法。 str.join(sequence)可以用自定的str字符串分隔一个序列&#xff0c;这个序列可以是字符串&#xff0c;列表&#xff0c;元组&#xff…

Use Vim as a Python IDE

Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugins and tools for building a delightful vim python environment, escpecially for Vim8: 我喜欢vim&#xff0c;经常用它来编写Python代码。以下是一些有用的插件和工…

sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法 因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不是相同数据库,不让还原,在网上找到下面的方法解决了: 一、右击系

sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法 因为是在另一台电脑对同名数据库做的备份&#xff0c;用常规方法还原&#xff0c;提示不是相同数据库&#xff0c;不让还原&#xff0c;在网上找到下面的方法解决了&#xff1a; 一、右击系统数据库master&…

RUNOOB python练习题 35 python print各色字体及背景

用来练手的python练习题&#xff0c;原题链接: python练习实例35 题干: 文本颜色设置 python中通过指令可以控制输出的背景颜色&#xff0c;前景颜色&#xff0c;以及显示方式。指令的语法如下: ’\033[显示方式&#xff1b;前景色&#xff1b;背景色m 输出字符 \033[0m’ 其…

ubuntu18.04 qemu环境搭建【学习笔记】

一、准备工具   1.1 安装相关工具     sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1.2 下载kernel(linux-4.0)与busybox(1.24)源码 https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ https://busybox.net/downloads/busy…

for else语句小tips : RUNOOB python练习题36

用来练手的python练习题&#xff0c;原题链接: python练习实例36 题干: 求100之内的素数 求某个范围内的素数&#xff0c;和之前的一个例题其实是一样的&#xff0c;上次的同类例题链接如下: python练习实例12 在实现题目要求时&#xff0c;这次用了for else语句&#xff0c…

Linux 下杀毒软件 clamav 的安装和使用

Linux 下杀毒软件 clamav 的安装和使用 安装依赖&#xff1a; 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum install -y openssl yum install -y epel-release openssl version 0.9.8 or higher 1. yum 安装 clamav 安装后会自动生成服务文件&#…