python文件处理基础_python基础---文件处理-阿里云开发者社区

文件处理

f=open(‘文件’,’r’)         打开一个文件

f.close()                关闭文件,相当于保存

1、字符编码

在文件处理过程中,首先有一个重要的概念,就是字符编码

字符编码:把人类的字符编译成计算机能认识的数字

字符编码表:就是一张字符与数字对应关系的表

ascii

gbk

utf-8          (硬盘中常用编码)

unicode       (内存中常用编码)

unicode ---->encode(‘utf-8’) 编码----> bytes

bytes ----> decode(‘utf-8’)解码 ----> Unicode

原则:字符以什么格式编译的,就要以什么格式解码

python3中的字符串分为两种

x='egon'              默认存为unicode

y=x.encode('utf-8')        使用encode编码为bytes

python2中字符串也分为两种

x=u'egon'              加u表示存为Unicode格式,与python3的字符串一样

y='alex'               默认存为bytes

2、文件模式

r     文本模式的读,在文件不存在,不会创建新文件

w     文本模式的写,文件存在则清空,不存在则创建

a      文本模式的追加,文件存在光标跳到文件末尾,文件不存在创建

rb     即直接从硬盘中读取bytes

wb     以二进制写模式打开

ab     以二进制追加模式打开

r+     读的时候可写

w+     写的时候可读

a+     追加时可读写

a. r模式

f.read()       #一次性读取文本中全部的内容,以字符串的形式返回结果

read()的使用:

read(3)       #文件打开方式为文本模式时,代表读取3个字符

#文件打开方式为b模式时,代表读取3个字节

#unicode格式中3个字节=1个字符

控制光标的移动(都是以字节为单位):

f.seek()      #控制光标移动几个字节

有三种模式:

0从首字节开始

1    b模式下运行,以当前光标所在的位置为参照物

2    b模式下运行,以最后一个字节为参照物

练习:模拟tail –faccess.log

1

2

3

4

5

6

7

8

9

10

11

12

13

# python3 tail.py -f access.log

import time

import sys

withopen(r'%s' % sys.argv[2],'rb') as f:

f.seek(0,2)

while True:

line= f.readline()

if line:

print(line.decode('utf-8'),end='')

else:

time.sleep(0.2)

truncate()    #文件的打开方式为可写,从文件开头开始截取,留下指定字节之后的字节

f.readline()       #只读取文本第一行的内容,以字符串的形式返回结果

f.readlines()        #读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用

f.readble()        #判断文件是否有读的权限,返回布尔值

b. w模式

f.write()          #写入文件,换行需要手动写换行符\n

f.writelines()           #一次写入多行

c. a模式

f.tell()              #查看光标位置

with open(‘文件’,’w’,encoding=’utf-8’) as f:

f.write(‘11111\n’)     #会把文件的内容赋值给f,执行完毕会自动close

python中把脚本后的参数传入脚本内的方法:

import sys

print(sys.argv)

一个cp文件的python小脚本

1

2

3

4

5

6

7

8

9

10

11

12

13

import sys

#python3 copy.py source.file target.file

if len(sys.argv) <3:

print('Usage:python3 copy.py source.file target.file')

sys.exit()

#r'C:\Users\Administrator\PycharmProjects\python18期周末班\day3\test.jpg'

withopen(r'%s' %sys.argv[1],'rb') as read_f,\

open(r'%s' %sys.argv[2],'wb') as write_f:

for linein read_f:

write_f.write(line)

本文转自lyndon博客51CTO博客,原文链接http://blog.51cto.com/lyndon/1948655如需转载请自行联系原作者

迟到的栋子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值