2018-01-29 文件操作

4.1 读写文件

1读文件

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

text=f.readlines()

print(text)

f.close()

2. 写文件

f=open('1.txt','w')

f.write('hello')

f.close()

if __name__=='__main__':
    filename=input('please input the name of file:')
    f=open(filename,'w')
    while 1:
        context=input("please input context:('EOF' will close file): ")
        if context=="EOF":
            f.close()
            # exit(1)
            break
        else:
            f.write(context)
            f.write('\n')
please input the name of file:1
please input context:('EOF' will close file): abcccc
please input context:('EOF' will close file): bbbbbbbbbb
please input context:('EOF' will close file): vvvvvvvvvvvvvv
please input context:('EOF' will close file): EOF
***start*****
abcccc
bbbbbbbbbb
vvvvvvvvvvvvvv


#####end#######



4.2 文件方法

常用方法:

readline() 一行一行的读取

readlines() 整个文件每一行作为一个元素,一个元素是一个字符串,整个是一个列表

next()下一行

read()把整个内容都读成一个字符串

write()写入的是如字符串

writelines()参数是列表,比如列表,它会迭代帮你写入文

文件属性:

f.name

f.closed

f.endoding

f.mode  r w  a  b  

f=open('1.log',encoding=ENCODING)
print(f.name)
print(f.mode)
print(f.readlines())
print(f.readline())
print(f.closed)
f.close()

with 方法

with open('1.log',r,'encoding=ENCODING') as f:
    print(f.read())

codecs 使用alt+enter 导入模块

with codecs.open('1.log','r',encoding=ENCODING) as f:
    print (f.read())

4.3 Python2 的乱码问题

1.添加为encoding  utf-8 #_*_coding:utf-8 _*_

2. s= u"你好”

3. 解码成uft-8 s.decode('tuf-8')

python2 转码的过程:

源码编码-->unicode 编码--》目的编码

在解码的时候,方法1:

m='中文’

print(m.encode('utf-8') )报错

s.decode('utf-8').encode('gbk')

犯法2:

import sys

reload(sys)

print(sys.getdefaultencoding())

sys.setdefaultencoding('utf-8')

print(sys.getdefaultencoding())


Python 3 默认utf-8

4.4 Python对passwd文件进行排序


import codecs

file='1.log'
sortfile='sortpasswd.txt'
filecontext=[]
sortuid=[]

with codecs.open(sortfile,'wb') as fsort:
    with codecs.open(file,'r',encoding='utf-8') as f:
        filecontext += f.readlines()#取内容
        for line in filecontext:
            sortuid.append(int(line.split(":")[2]))#将第三列元素依次追加到sortuid 列表中。
        sortuid.sort()#排序
        for uid in sortuid :
            for line in filecontext:
                if str(uid)==line.split(':')[2]:
                    print(line)
                    fsort.write(line.encoding('utf-8'))#line.encoding('utf-8')把字符串转换成byte。

你可能感兴趣的:(Python)