【Python】文件读写操作
Python的文件读写有点类似php的文件读写。php的文件读写已经在《【php】让记事本成为你调控变量的控制台》(点击打开链接)说过了,以下用一个小样例说明Python的文件读写。
在F盘原本是没有f:\你好.txt这个文件的,我们要把用户在Python控制台输入的内容,搞到这个文件上去。本程序在Eclipse下的Pydev编译通过没有乱码。Windows控制台cmd的乱码问题请參考《【Python】遍历某文件夹下的全部文件夹与文件的路径、输出中文乱码问题》(点击打开链接)。程序代码例如以下:
#-*-coding:utf-8-*-
import os;
#写操作
fileName="f:\你好.txt"
fileContent=raw_input("你输入的内容将会追加到"+fileName);
fp=open(fileName.decode('utf-8').encode('gbk'),"a+");
fp.write(fileContent);
print "你输入的内容:"+fileContent;
print "已追加写入至:"+fileName;
fp.close();
print ;
#读操作
fileSize=os.path.getsize(fileName.decode('utf-8').encode('gbk'));
fp=open(fileName.decode('utf-8').encode('gbk'),"a+");
print "fileName如今的文件大小为:"+str(fileSize)+"b";
print "如今"+fileName+"的内容为:"
print fp.read(fileSize).decode('utf-8');
fp.close();
执行效果例如以下:
这里,主要说明几个文件操作的方法:
1、系统的固有类OS能够获取文件大小:os.path.getsize(filename),当中filename是路径。
能够看到上面的路径被我通过.decode('utf-8').encode('gbk')先编码为utf-8,再解码为gbk,用来适应系统的编码方式,否则会出现乱码。
主要是系统对于文件名称的处理与Python对于文件名称的处理的编码不一致。即使你在开头放了#-*-coding:utf-8-*-
然而,对于文件内容的处理却不用如此。
Python的编码就是奇奇怪怪的
2、open方法第二个參数代码文件的读取的方式。
尽管Python与C语言一样,提供的读取方法相同有a+,w+,r+三大类。
w。以写方式打开,
a。以追加模式打开(从EOF開始,必要时创建新文件)
r+,以读写模式打开
w+,以读写模式打开(參见w)
a+,以读写模式打开(參见a)
rb,以二进制读模式打开
wb,以二进制写模式打开(參见w)
ab,以二进制追加模式打开(參见a)
rb+。以二进制读写模式打开(參见r+)
wb+,以二进制读写模式打开(參见w+)
ab+,以二进制读写模式打开(參见a+)
可是,经历亲自測试,发现不管是读写操作。都用a+则不会出错,也不知道为什么。反正php是这样玩。我在Python试试,一開始用r+去读文件老不行,结果统一用a+却能够了。很奇怪。
3、最后,全部编程语言都一样,不管是文件也好、数据库也好。人走带门,自行补上关闭连接的方法。都是默认不关闭~
【Python】文件读写操作的更多相关文章
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- Python 文件读写操作实例详解
Python提供了必要的函数和方法进行默认情况下的文件基本操作.你可以用file对象做大部分的文件操作 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前 ...
- Python—文件读写操作
初识文件操作 使用open()函数打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了,根据打开文件的方式不同能够执行的操作也会有相应的差异. 打开文件的方式: r, w, a, ...
- 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.核心功能 ‘r’ ...
- python文件读写操作与linux shell变量命令交互执行
python对文件的读写还是挺方便的,与linux shell的交互变量需要转换一下才能用,这比较头疼! #coding=utf-8 #!/usr/bin/python import os impor ...
- python文件读写操作
操作文件时一般经历以下步骤: 打开文件 操作文件 1.打开文件: 文件句柄 = open('/path/to/file_name','pattern') pattern: r:只读模式,打开文件时默认 ...
- python 文件读写操作打开模式
‘r’:只读.该文件必须已存在. ‘r+’:可读可写.该文件必须已存在,写为追加在文件内容末尾. ‘rb’:表示以二进制方式读取文件.该文件必须已存在. ‘w’:只写.打开即默认创建一个新文件,如果文 ...
- python里文件读写操作
文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...
- python(三)一个文件读写操作的小程序
我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...
- excel、xls文件读写操作
python 常用的excel.xls文件读写操作,有两个模块 xlrd:读 xlwt:写 本次先写一个读的例子: class CaseData(object): def __init__(self, ...
随机推荐
- IOS的唯一标识符问题(转)
引用地址 http://www.zhihu.com/question/22599526/answer/21938878 网上搜了下IOS手机标志的种类,直接引用过来. UDID [[UIDevice ...
- 尼基塔第一季/全集Nikita迅雷下载
本季Nikita Season 1 第一季(2010)看点:尼基塔曾经是一个性格叛逆的问题少女,因为犯下重罪被处以死刑.一家秘密间谍机构将尼基塔从死牢里救了出来,伪造了她的死亡,将她训练成了一名间谍和 ...
- Android之仿心跳动画实现
// 按钮模拟心脏跳动 private void playHeartbeatAnimation() { AnimationSet animationSet = new AnimationSet(tru ...
- centos7更改为启动桌面或命令行模式
进入cenos7的命令行模式 终端输入“init 3”回车进入命令行模式 登录成功后 # systemctl get-default //获取当前系统启动模式 查看配置文件 # cat /etc/in ...
- SpringBoot 获取当前登录用户IP
控制器方法: @RequestMapping(value = "/getIp", method = RequestMethod.POST) @ResponseBody public ...
- PO BO VO DTO POJO DAO概念及其作用(附转换图)
J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...
- CentOS下httpd下php 连接mysql 本机可以,外网报错Could not connect: Can't connect to MySQL server on '127.0.0.1' (13)2003 原因解析
php代码很简单: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,& ...
- 回顾 Exchange 2007 SCC 安装-供需要的人参考!
最近可能会涉及到一个项目的升级,客户目前是基于SCC+SCR的一种工作模式,因为之前对SCR 了解很少,所以需要搭建一个SCC+SCR 平台来做一个整体的POC,来还原整个安装和升级过程. 首先我们先 ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1] (转)
Index Data Author: David Smiley Eric Pugh 译者:Koala++ / 屈伟 在这一章中我们将了解如何将数据传入Solr.这个传入的过程称之为索引,尽管中间还包含 ...
- python2.7 调用 .net的webservice asmx
首先安装pip install suds 或下载:https://pypi.org/project/suds-jurko/0.6/#files 这个是最新版本 由于不支持python3.6, 所以只能 ...