码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础之文件处理

时间:2017-06-14 02:17:32      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:rename   查看   window   内存   readlines   python   write   port   编码方式   

一、常用操作

1.打开文件 open()  

f=open(‘a.txt‘)
print(f) #----------------------> <_io.TextIOWrapper name=‘a.txt‘ mode=‘r‘ encoding=‘cp936‘>

 其中a.txt 是相对路径,如果想用绝对路径打开文件,要在文件名前加一个‘r’,否则就要把‘\’改成‘\\’

打开文件时有个问题,就是字符编码的问题。如果不指定打开编码,默认使用操作系统的编码,Windows是GBK

技术分享

可以在这里查看文件编码方式,使用什么编码保存的文件,就要用什么编码打开文件,可以在open()文件时指定打开的编码方式

写成这样:f=open(‘a.txt‘,encoding=‘utf-8‘)

还有一个问题就是,这种打开文件的方式会把整个文件读到内存中,如果文件很大的话,内存可能就会被占满了,可以用for line in f的方式

打开文件后,就可以操作文件了,如读文件f.read(),注意最后一定要关闭文件f.close()

2.文件的打开模式

f=open(文件路径,模式)

打开文件的模式有:

  • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
  • w,只写模式【不可读;不存在则创建;存在则清空内容】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

 

"+" 表示可以同时读写某个文件

  • r+, 读写【可读,可写】
  • w+,写读【可读,可写】
  • x+ ,写读【可读,可写】
  • a+, 写读【可读,可写】

 

 "b"表示以字节的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b         #以字节的方式操作不会有乱码,也不用转码

3.print(f.readline())   打印文件第一行

4.print(f.readlines())   将文件以列表的形式打印

5.按读的方式打开文件并不能操作文件,只有以写的方式打开文件才能进行写操作

  f.open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)    

 如果文件存在,先把原文件内容删除,再写

 如果文件不存在,则新建一个文件,在写

   在进行写操作是注意,文件中都是字符串类型,要带着引号,也可以以列表的形式写,当然列表的每个元素也必须是字符串  

f=open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
f.write(‘123413\n‘) #\n代表换行
f.write([‘123\n‘,‘hello\n‘])
f.close()    #注意最后一定要关闭文件

二、其他方法

f=open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)
f.flush() #写完后立即刷到硬盘上

print(f.close()) #查看文件是否为关闭状态

print(f.encoding) #查看编码方式

print(f.name) #查看文件名

print(f.readable()) #查看是否可读

print(f.wirteable()) #查看是否可写

print(f.read()) #括号里可以指定数字,只有read()里的数字是以字符为单位,
# 其余的文件内光标移动如seek,tell,truncate都是以字节为单位

print(f.seek(2)) #seek是以字节为移动单位,但是汉字在utf-8中是以三个字节为单位的,所以如果是seek(2) 就会报错

print(f.tell()) #告诉当前光标位置

f.truncate(3) #截断,从0到3后面的删除,注意一定要是写操作才行

三、二进制的方式复制文件

 以一张图片a.jpg为例,复制一份

read_file=open(‘a.jpg‘,‘rb‘)
write_file=open(‘a.copy.jpg‘,‘wb‘)
write_file.write(read_file.read())

四、文件修改

#修改文件a.txt中‘hello‘为‘hi‘
import os #导入os模块
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,\    #用with语句可以很方便的进行上下文处理,可以自动关闭操作的文件
open(‘.a.txt.swp‘,‘w‘,encoding=‘utf-8‘) as write_f: #新建一个临时文件
for line in read_f:
if ‘hello‘ in line:
line=line.replace(‘hello‘,‘hi‘)
write_f.write(line)
os.remove(‘a.txt‘)
os.rename(‘.a.txt.swp‘,‘a.txt‘)

Python基础之文件处理

标签:rename   查看   window   内存   readlines   python   write   port   编码方式   

原文地址:http://www.cnblogs.com/zhang-can/p/7004451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!