python以读写方式打开文件_Python文件处理(一)读写文件

webchat.jpg

Python-Logo.png

本文首先介绍如何利用Python进行文件读写操作,最后通过实例讲解基本用法。

基础知识

打开文件

Python内置了open函数用于打开文件:1

2

3

4

5

6file object = open(file_name [, access_mode][, buffering])

参数列表:

file_name:文件名;

access_mode:打开模式,有只读、写入、追加写入等,默认方式为只读;

buffering:文件缓冲,0:不缓冲数据;1:缓冲1行数据;大于1表示缓冲指定行的数据;

access_mode文件打开模式如下:

模式

描述

r

以只读方式打开文件。文件指针处于文件的开头。(默认模式)

rb

以二进制格式打开一个文件用于只读。文件指针处于文件的开头。(默认模式)

r+

以读写方式打开文件。文件指针处于文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针处于文件的开头。

w

打开一个文件只用于写入。若该文件已存在则将其覆盖,否则创建新文件。

wb

以二进制格式打开一个文件只用于写入。若该文件已存在则将其覆盖,否则创建新文件。

wb+

以二进制格式打开一个文件用于读写。若该文件已存在则将其覆盖,否则创建新文件。

a

打开一个文件用于追加。若文件已存在,文件指针置于文件结尾。若该文件不存在,创建新文件写入。

ab

以二进制格式打开一个文件用于追加。若文件已存在,文件指针置于文件结尾。若该文件不存在,创建新文件写入。

a+

打开一个文件用于读写。若文件已存在,文件指针置于文件结尾。若该文件不存在,创建新文件写入。

ab+

以二进制格式打开一个文件用于追加。若文件已存在,文件指针置于文件结尾。若该文件不存在,创建新文件写入。

打开文件后获得文件对象,文件对象的属性列表如下:

属性

描述

file.closed

文件是否被关闭,true:是;false:否

file.mode

文件被打开的访问模式

file.name

文件名称

关闭文件

不使用的文件对象要使用close()方法及时关闭,文件关闭语法如下:1fileObject.close();

读文件

read()方法从打开的文件中读取字符串,语法如下:1fileObject.read([count]);

count是要读取的字节数,如果没有传递count参数,则Python会尝试读取尽可能多的内容。

tell()方法显示文件指针当前所处的位置;

seek(offset[, from])方法可以更改当前文件指针位置,参数列表:

offset:要移动的字节数;

from:指定开始移动字节的参考位置,0:文件开头;1:当前位置;2:文件末尾

写文件

write()方法可以将字符串写入打开的文件(注意:write不会自动在字符串结尾添加换行符,需要自己手动添加)1fileObject.write(string);

文件重命名

文件重命名和删除文件需要借助os模块,首先要引入os模块:1import os

os模块是Python访问操作系统功能的主要接口,它提供的功能主要包括删除/重命名文件、遍历目录树以及管理文件访问权限等。

文件重命名函数rename语法如下:1os.rename(current_file_name, new_file_name)

删除文件

同样需要引入os模块,语法如下:1os.remove(file_name)

文件目录

os.path模块提供了可以完成管理和操作文件路径名中的各个部分,获取文件或子目录信息,文件路径查询等操作。

创建目录

在当前目录下创建一个新目录test:

1os.mkdir("test")

切换目录

从当前目录切换到’/home/test’目录:

1os.chdir("/home/test")

删除目录

删除目录’test’:

1os.rmdir('test')

获取当前工作目录

1os.getcwd()

遍历目录

1cwd = os.getcwd()

os.listdir(cwd)

获取文件名

去掉目录路径,返回文件名:

1os.path.basename(path)

获取文件路径

去掉文件名,返回目录路径:

1os.path.dirname(path)

实战

目标:读取文档weixin.txt,添加适当内容后写入文档result.txt。

weixin.txt文档部分内容如下:1-1系统繁忙

0请求成功

40001获取access_token时Secret错误,或者access_token无效

40002不合法的凭证类型

40003不合法的UserID

40004不合法的媒体文件类型

40005不合法的文件类型

40006不合法的文件大小

40007不合法的媒体文件id

40008不合法的消息类型

40013不合法的corpid

40014不合法的access_token

40015不合法的菜单类型

40016不合法的按钮个数

40017不合法的按钮类型

40018不合法的按钮名字长度

40019不合法的按钮KEY长度

40020不合法的按钮URL长度

40021不合法的菜单版本号

...

读文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18# -*- coding: utf-8 -*-

'''

Created on 2016/1/12

@filename: main.py

@author: yurixu

@des: Python读写文件

'''

f = open('weixin.txt', 'r')

def ():

#python 按行读取文件

for i in f:

print i

if __name__=="__main__":

main()

f.close()

输出的文件内容为乱码:143010 闇€瑕佸浜庡洖璋冩ā寮?

43011 闇€瑕佷紒涓氭巿鏉?

43013 搴旂敤瀵规垚鍛樹笉鍙

44001 澶氬獟浣撴枃浠朵负绌?

44002 POST鐨勬暟鎹寘涓虹┖

44003 鍥炬枃娑堟伅鍐呭涓虹┖

44004 鏂囨湰娑堟伅鍐呭涓虹┖

乱码原因:源文件weixin.txt编码格式为UTF-8,Windows本地默认编码格式为GBK,所以直接在控制台打印输出字符串就会产生乱码。

解决方法:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22# -*- coding: utf-8 -*-

'''

Created on 2016/1/12

@filename: main.py

@author: yurixu

@des: Python读写文件

'''

import sys

#获取当前系统编码

type = sys.getfilesystemencoding()

f = open('weixin.txt', 'r')

def ():

#python 按行读取文件

for i in f:

print i.decode("UTF-8").encode(type)

if __name__=="__main__":

main()

f.close()

输出:143006 需要订阅

43007 需要授权

43008 需要支付授权

43010 需要处于回调模式

43011 需要企业授权

43013 应用对成员不可见

写文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28# -*- coding: utf-8 -*-

'''

Created on 2016/1/12

@filename: main.py

@author: yurixu

@des: Python读写文件

'''

import sys

type = sys.getfilesystemencoding()

f = open('weixin.txt', 'r')

w = open('result.txt', 'w')

def ():

#python 按行读取文件

for i in f:

a = i.decode("UTF-8").encode(type)

#python 分割字符串

b = a.split()

#python 拼接字符串

w.write("'"+b[0]+"'"+" => "+"'"+b[1]+"',")

w.write('n')

if __name__=="__main__":

main()

f.close()

w.close()

weixin.txt每行包含两列内容:errCode和errMsg,写入文件前需要对两列分别处理,所以需要使用split方法进行字符串分割,生成元组b,再对元组各元素进行字符拼接。由于write方法不自动添加换行符,所以在每行结尾要手动添加换行符n,在main结束后关闭文件。

最终写入的文件内容:1'?-1' => '系统繁忙',

'0' => '请求成功',

'40001' => '获取access_token时Secret错误,或者access_token无效',

'40002' => '不合法的凭证类型',

'40003' => '不合法的UserID',

'40004' => '不合法的媒体文件类型',

'40005' => '不合法的文件类型',

'40006' => '不合法的文件大小',

'40007' => '不合法的媒体文件id',

'40008' => '不合法的消息类型',

'40013' => '不合法的corpid',

...

生成的result.txt可以直接拿来添加array头尾,放置到Yii配置文件中使用。

Python简单读写文件就介绍到这里,关于Python如何读写Excel文件,我将在Python文件处理(二)读写Excel文件中介绍。

—- 完结 —-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值