day3 文件操作

一.文件操作

1.文件基本的读取操作

f = open('chenli.txt') #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
print('我是分隔线'.center(50,'-'))
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印读取内容
 
f.close() #关闭文件

2.文件打开基本的读写追加 参数

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

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

 

 

   

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

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

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

  表示:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

2.编写拷贝文件程序

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()

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)

3.文件内的光标移动

1. 文件打开方式为文本模式时,代表读取3个字符

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

3.其余的文件内光标移动都是以字节为单位如seek表示让光标跳转大到指定位置,tell显示光标那个字节,truncate

4. 语法格式:file.seek(offset, whence=0):

--> offset: 偏移量,需要向前或者是向后移动的字节数

--> whence: 可选值,默认为0, 可选值为1或者2,表示从何处开始计算偏移,具体来说,

--> 0表示从当前位置开始计算偏移

--> 1表示从文件头位置开始计算偏移

--> 2表示从文件尾开始计算偏移

二.函数笔记

1 .python中函数定义

python中函数定义方法:
  
def test(x):
     "The function definitions"
     x+=1
     return x
      
 def:定义函数的关键字
 test:函数名
 ():内可定义形参
 "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
 x+=1:泛指代码块或程序处理逻辑
 return:定义返回值


调用运行:可以带参数也可以不带
函数名()

2.函数的好处:

  代码重用

  保持一致性,易维护

  可扩展性

3.函数的定义语法

def 函数名(arg1,arg2,arg3):
    "注释"
    函数体
    return 返回值

函数名一般是动词
参数、、、
return:函数内部可以有多个return,但只能执行一次,函数就结束调用,
        并且会把return后的值作为函数执行的结果返回

函数定义三种形式

无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
空函数:设计代码结构

 

4.函数分为 实参跟形参

#形参:在定义函数时,括号内的参数成为形参
#特点:形参就是变量名

#实参:在调用函数时,括号内的参数成为实参
#特点:实参就是变量值

#在调用阶段实参(变量值)才会绑定形参(变量名)
#调用结束后,解除绑定

 

5.参数的分类

#参数的分类
#位置参数:按照从左到右的顺序依次定义的参数
    #位置形参:必须被传值,并且多一个不行,少一个也不行
    #位置实参:与形参按照位置一一对应

def foo(x,y):
     print(x)
     print(y)

 foo('egon',1,2)

#关键字实参:指的是按照name=value的形式,指名道姓地给name传值
def foo(name,age):
     print(name)
     print(age)

foo('egon',18)

默认参数需要注意的问题
#问题一:默认参数必须放在位置参数之后
# def foo(y=1,x):
#     print(x,y)

问题二:默认参数只在定义阶段赋值一次,而且仅一次
# x=100
# def foo(a,b=x):
#     print(a,b)foo(age=18,name='egon')

 

posted @ 2017-07-16 13:51  一晃而过的少年  阅读(103)  评论(0编辑  收藏  举报