python文件操作笔记

来源:互联网 发布:eromangabox新域名 编辑:程序博客网 时间:2024/05/27 20:40

文件操作:长期保存数据以便重复使用、修改和共享,必须将数据以文件的形式存储到外部存储介质或云盘中。按文件中数据的组织形式可以把文件分文本文件和二进制文本。

1.文本文件

   文本文件存储的是常规字符串,由若干文本行组成,通常每行以换行符"\n"结尾。常规字符串是指记事本或其他文本编辑器能正常显示,编辑并且能够直接阅读和理解的字符串,如英文、汉字、数字字符串。

2.二进制文件

   二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通文本处理软件直接编辑,通常需要专门的软件才能显示、修改编辑或执行。常见的图形文件、音频文件、可执行文件、资源文件、各种数据库文件等属于二进制文件。

python内置了文件对象,通过open()函数即可以指定的模式打开指定文件或创建文件对象,格式如下:

    文件对象名=open (文件名,[打开方式,缓冲区])

文件打开模式                                                                 文件对象属性

模式

说明

属性

 

r

读模式

closed

判断文件是否关闭,若文件关闭,则返回True

w

写模式

mode

返回文件的打开模式

a

追加模式

name

返回文件的名称

b

二进制模式(可与其他模式组合使用)

 

 

+

读写模式(可与其他模式组合使用)

 

 


文件对象常用方法:

方法

功能说明

read([size])

从文件中读取size个字节

readline()

从文本文件中读取一行内容作为结果返回

readlines()

从文本文件中的每行文本作为一个字符串存入列表中,返回该列表

seek(offset[,whence])

把文件指针移动到新的位置,offset表示相对于whence的位置

tell()

返回文件指针的当前位置

write(s)

把字符串s的内容写入文件

writelns()

把字符串列表写入文本文件,不添加换行符

实例

1、读取文件、写入文件

with codecs.open(‘filename.txt’,’r’)  as f:

   f.write(s)

2、随机生成数据格式如,(‘编号’,整数)写入文件、读取该文件并按整数排序,

import codecs

import random

withcodecs.open('2016.txt','w') as f:

    s=""

    for i in range(100):

        s+="编号,"+str(random.randint(1,1000))+"\n"  #生成指定格式数据

f.write(s)   #数据写入文件

 

withcodecs.open('2016.txt','r') as f:

    data=f.readlines()  #将文本文件的每行文本作为一个字符串存入列表中,

   datamc=[eval(line.strip('\n').split(',')[1])for line in data ]   #将整数部分取出来

print(datamc)

print('排序后结果')

datamc.sort(key=lambdax:x) #排序

print(datamc)


3 随机生成数据格式如,(‘编号’,整数)写入文件、读取该文件并按整数排序:

#每次一行一行读取数据
l=[]
with codecs.open('2016.txt','r') as f:
    while True:
        line=f.readline()
        if line=='':
            break
        #print(line.strip('\n'),end=',')
        t=[]
        t.append(line.strip('\n').split(',')[0])
        t.append(eval(line.strip('\n').split(',')[1]))
        l.append(t)
print(l)
print('排序后数据')
l.sort(key=lambda x:x[1])
print(l)

用python习惯 做代码优化如下:

data=[]
with open('2016.txt','r') as f:  #打开文件
    for line in f:                          #文件对象是可迭代对象
        b,i=line.strip('\n').split(',') #对文件对象中两部分内容分别赋值给临时变量
        data.append([b,eval(i)]) #将内容添加到list中
print(data)                                #输出原始数据
print('排序后数据:')
data.sort()                               #排序
print(data)                              #输出排序后数据


0 0