ptyhon之路day3-文件处理及函数1

文件处理

文件处理流程

1 打开文件,得到文件句柄并赋值给一个变量

2 通过句柄对文件进行操作

3 关闭文件

1python中操作文件

f = open('a.txt','r',encoding='gbk') #windows操作系统默认gbk编码

open是打开文件 是向操作系统发起请求来打开一个文件

f 是应用程序存到内存中 f->打开文件对应着

f.read()

r模式在文件没有的时候 不会自动创建文件

b模式即直接从硬盘中读取bytes

f=open('a.txt','rb')

print(f.read().decode('utf-8'))

 

w文本模式的写

文本模式的写 必须指定编码,文件不存在创建,文件存在则清空(实际是创建一个新文件覆盖掉)

f=open('a.txt','w',enconding='utf-8')

print(f.writable()) #TRUE 注:w只能写 r只能读

a文本模式的追加  

文本模式的追加,文件不存在创建,文件存在光标默认在最后位置追加

文本追加需要使用光标 在光标的位置进行插入

f=open('b.txt','a',enconing='utf-8')

print(f.tell())

如何测试使用a模式下是否能写

 f.write('111\n') #FALSE

r+ w+ b+

读的时候写 写的时候读 

rb模式即直接从硬盘读取 编码基本不用考虑

f=open('a.txt','rb')

wb 模式

f=open('a.txt','wb')

f.write('你好啊').encode('utf-8')

ab模式

也是写模式 写到最后,每次都需要encode操作才能写入

 

可以发现之前的操作都是open 并没有关闭文件 这样会导致内存溢出 并没有回收,保证不占操作系统资源

不论f.close()还是其他的都是向操作系统发送命令进行执行

接下来是with open

with open ('file.txt','w',enconding='utf-8')

f.write(‘1111\n’)

简单copy程序

f=open('test.jpg','rb')

print(f.read())

    with open ('test.jpg','rb') as read_f,open('test1.jpg','wb') as  write_f

    for line in read_f:

      write_f.write(line)

-------------------

import sys

if len(sys.argv) <3:

  print('copy.py source.file')

  sys.exit()

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

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

   for line in read_f:

     write_f.write(line)

文件的其他操作

f=open('a.txt','r',enconding='utf-8')

print(f.read(3)) #读的字符 中文算一个 英文一个字母一个 

f=open('a.txt','rb')

print(f.read(3).decode('utf-8')) #读取三个字节

 

字符编码:

 什么是字符编码?

把人类的字符翻译成计算机能认识的数字

  字符编码标常见

    ascii

    gbk

    utf-8

    unicode

unicode---->encode('utf-8') ---->bytes

bytes----->decode('utf-8')----unicode

encode编码

decode解码

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

   ps:字符编码在内存中的格式都是unicode,硬盘中是bytes

在python3中字符串分两种

x='abc' 存成unicode

y=x.encode('utf-8') 存成bytes

 

  

1 什么是函数?
2 为什么要用函数? 3 函数的分类:内置函数与自定义函数 4 如何自定义函数 语法 定义有参数函数,及有参函数的应用场景 定义无参数函数,及无参函数的应用场景 定义空函数,及空函数的应用场景 5 调用函数 如何调用函数 函数的返回值 函数参数的应用:形参和实参,位置参数,关键字参数,默认参数,*args,**kwargs




6 高阶函数(函数对象)

#函数是第一类的对象:指的是函数可以被当做数据传递

def foo():
print('from foo')
#1 被赋值
# f=foo
# print(f)
# f()

#2 可以当做参数传入
# def wrapper(func):
# # print(func)
# func()
# wrapper(foo)

#3 可以当做函数的返回
def wrapper(func):
return func
# res=wrapper(foo)
# print(res)

#4 可以当做容器类型的元素

# cmd_dic={
# 'func':foo
# }
#
# print(cmd_dic)
#
# cmd_dic['func']()





posted @ 2017-07-21 13:16  what_are_words  阅读(305)  评论(0编辑  收藏  举报