码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作和函数

时间:2017-05-17 00:59:55      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:添加   可变   操作   三元   tab   返回值   导致   **kwargs   功能   

一,文件的打开模式
r 只写模式(默认)
r+ 以读写的方式打开文件
w 只写模式(不可读,先删除原有的文件内容,再重新写入新的内容,如果文件不存在,则创建一个新的文件)
w+ 写读模式(
不可读,先删除原有的文件内容,再重新写入新的内容,如果文件不存在,则创建一个新的文件
a 追加模式(只能追加,以写入的方式打开文件,在文件的末尾追加新的内容,如果文件不存在,则创建一个新的文件)
a+ 以读写的方式打开文件,
在文件的末尾追加新的内容,如果文件不存在,则创建一个新的文件
b 以二进制模式打开文件,可与r,w,a,+结合使用
U 支持所有的换行符号,“\r”,"\n","\r\n"都表示换行
参数
f = open("aa",mode="r",encoding="utf-8")    
#定义名 = open("文件名","模式",指定打开字符集方式)
  • f.name #查看db文件名
  • f.tell() 显示文件中,当前 光标位置 
  • f.read() 读全部 (read是读字符 其他都是字节),f.read(5)读取5个字符 
  • f.readline() 读一行 读取成列表形式 
  • f.wirte() 写入
  • f.close() 关闭 
  • f.seek(10) 移动10个字节 #f.seek(0,2)光标移动到最后操作 (对字节操作,utf-8中,汉字代表3个字节 
  • f.encoding 查看字符编码
  • f.writable() 是否以写模式打开, #True为真 False为假
  • f.readable() 是否以读模式打开, #True为真 False为假
  • f.flush() 强制刷新到硬盘 #一般用于打印实时日志,基本不用,会导致硬盘速度变慢

新建一个文件:

open 打开文件

mode 显示文件的打开模式,默认是r

windows默认编码是gbk,所以需要转换成utf-8

read一次性读完文件里的所有内容

技术分享

 文件的修改的方式

技术分享

技术分享

 

        读取aa和bb文件
        with open("aa","r",encoding="utf-8") as f_aa, open("bb") as f_bb:
        print(f_aa.read())
        print(f_bb.read())

    读取aa文件写入到bb

        with open("aa","r",encoding="utf-8") as f_aa, open("bb","w",encoding="utf-8") as f_bb:
        tow_f=f_aa.read()
        f_bb.write(tow_f)

    读取aa文件追加到bb

        with open("aa","r",encoding="utf-8") as f_aa, open("bb","a",encoding="utf-8") as f_bb:
        tow_f=f_aa.read()
        f_bb.write(tow_f)

 
技术分享

 

2个文件转列表,转字典,转成列表中的N个字典

技术分享
    #db文件格式
    #aa
    #bb
    #cc
    #读取db文件生成列表
    goods =[]
    for gn in open("goods","rt",encoding="utf-8"):
    goods.extend(gn.strip().split())
    price =[]
    for en in open("price","rt",encoding="utf-8"):
    price.extend(en.strip().split())
    print(price)
    #2个列表合并成字典
    shop=dict(zip(goods,price))
    print(shop)
    #字典转成列表的子集添加n个字典
    test = []
    for k, v in shop.items():
    test.append({"name": k, "m": v})
    print(test)
技术分享

 

一个文件转成列表中的N个字典

技术分享
    f2 = open(‘product‘, ‘r‘, encoding=‘utf-8‘)
    product_data = f2.read()
    f2.close()
    v = product_data.split(‘\n‘)
    print(v)
    # 将列表转换成字典
    lin = []
    for i in v:
    v1 = i.split(‘:‘)
    print(v1)
    v1[1] = int(v1[1])
    dic = {v1[0]:v1[1]}
    lin.append(dic)
    print(lin)
技术分享

 

 

光标问题

技术分享
cuisor读取光标地址, read读取文件全部内容, seek 把光标移动到某个字节后面

    f.seek(10) 代表移动10个字节(utf-8中,汉字代表3个字节)

     
    创建文件lyric,填写内容如下

    123456testABCDE
    my name is guolm

     
    python执行命令:
        >>>f = open("lyric","r",encoding="utf-8") #encoding 指定读取文件类型的格式
        >>>print(‘cuisor:‘,f.tell())         #f.tell()显示当前文件内光标位置,
        cuisor: 0
        >>>print(f.read())               #读取f变量中全部内容, 如果是print(f.readline()) 读取一行内容
        123456testABCDE my name is guolm
        >>>print("--------------------------------------")
        >>>print(‘cuisor:‘,f.tell())         #f.tell()再次执行,28是当前光标所在字符位置
        cuisor: 33
        >>>print(f.read())               #上次执行read()读取全部,本次读取文件从最后执行,所有没内容
        >>>print("--------------------------------------")
        >>>f.seek(10)                  #f.seek(10) 代表移动10个字节后面, f.seek(0)移动到开头 (utf-8中,汉字代表3个字节)
        >>>print("cursor:",f.tell())          #因为上边操作,光标从10字节之后,执行命令
        cursor: 10
        >>>print(f.read(5))              #读取5字符 注:汉字代表一个字符,每行的结尾(\n)也代表一个字符
        ABCDE
        >>>f.close()                  #文件结束

 函数

在python中函数分为两种:

内置函数:内置函数都会带返回值

技术分享

 

自定义函数:def定义函数关键字,任何形式都可以,先定义后使用

技术分享

定义函数的三种形式:
一,无参数函数:如果函数的功能仅仅只是执行一些操作而已,就定义成无参函数
技术分享

 

二,有参函数:函数的功能的执行依赖于外部传入的参数,有参函数通常都有返回值
技术分享

 

三,空函数:
技术分享

 

技术分享

 

技术分享

技术分享

技术分享

 技术分享

 

 
三元表达式
if写中间,条件成立写左边
技术分享
 
技术分享

 

return 一个值,函数调用返回的结果就是这个值
技术分享

技术分享

从大的角度去看,函数的参数分两种
形式参数(变量名):
技术分享

 

实参(值)
技术分享

 

函数定义的阶段到底干了什么事情?
只检测函数体的语法并不会执行
 
详细的区分函数的参数分为五种:
位置参数
技术分享

 

关键字参数
不能重复对一个形参传值
技术分享

 

技术分享
默认参数
技术分享

 

技术分享

 

了解:默认参数在定义阶段就已经赋值了,而且只在定义阶段赋值一次
固定值,等于不可变类型
技术分享
可变长参数(*args   **kwargs)
技术分享
技术分享

技术分享

技术分享
命名关键字参数
技术分享

技术分享 

*位置参数
**关键字参数
技术分享

 

 

 

文件操作和函数

标签:添加   可变   操作   三元   tab   返回值   导致   **kwargs   功能   

原文地址:http://www.cnblogs.com/gongxu/p/6858839.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!