• 文件操作与函数


    一、文件操作

    1)、file 对象使用 open 函数来创建

    参数1:文件名,可以是文件的绝对路径

    参数2:option ,常用的有:r(读),w(写),a(追加),b(以二进制方式进行操作)

    2)、 file 对象常用的函数

    ①、file.read()          把文件的所有内容读取出来,返回一个字符串

    ②、file.write(data)        把字符串data写入到文件中,只接受字符串参数

    ③、file.readline()          每次读取文件一行数据,返回每行的字符串数据

    ④、file.readlines()        读取文件内容,返回一个list,每一行是一个元素

    ⑤、file.name           文件名字

    ⑥、file.fileno()           文件描述符

    ⑦、file.close()           关闭文件

    ⑧、file.encoding          文件编码(这个最好每次写上,可以避免版本问题导致的乱码)

    ⑨、file.closed            返回布尔值,判断文件是否已经关闭

    ⑩、file.seek(offset, whence)     控制文件光标,文件需要使用b方式打开,offset偏移量正数向后偏移,负数向前偏移,whence(0表示开头,1表示当前位置,2表示结尾)

    ⑪、file.tell()           返回光标的下标(换行符 等于两个字符)

    ⑫、file.truncate(size)         只有在写文件才能用,size表示清空到什么地方

    3)、示例

    ①、读取文件内容(读状态下需要文件是存在的,否则报错):

    f = open("1.txt", "r", encoding="utf-8")
    print(f.read())
    f.close()

    ②、写入文件内容(写状态下文件是否存在不重要,存在的话会重写,不存在会创建):

    f = open("1.txt", "w", encoding="utf-8")
    f.write("nihao woshi jiang")
    f.close()

    ③、追加文件内容:

    f = open("1.txt", "a", encoding="utf-8")
    f.write("nihao I'm jiang What's your name")
    f.close()

    ④、全局声明(默认规定用大写,后面如果有多处修改的话可以很快速的解决,建议使用):

    ENCODING = "utf-8"
    f = open("1.txt", "a", encoding=ENCODING)
    f.write("nihao I'm jiang What's your name")
    f.close()

    ⑤、打印文件内容及行号(需要使用到enumerate):

    ENCODING="utf-8"
    f = open("1.txt", "r", encoding=ENCODING)
    for i, line in enumerate(f.readlines()):
    print(i+1, line)
    f.close()

    ⑥、引用with语句来自动调用close()方法(最常用方式),使用codecs模块可以避免编码问题,推荐尽量使用这种: 

    with codecs.open('/path/to/file', 'r', encoding="utf-8") as f:
    print(f.read())

    二、函数

    1)、函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。也可以自己创建函数,这被叫做用户自定义函数。在写每一个函数的时候尽量不要超过30行代码,精简成每个细小功能,提高易读性!

    2)、语法:

    函数的声明(形参):
    def functionname( parameters ): "函数_文档字符串" function_suite return [expression]

    函数的调用(实参):
    functionname( arg1, arg2, ... )

     3)、示例:

    ①、阶乘:

    def jc(n):
    result = 1
    if n == 0:
    return result
    else:
    for i in range(1, n + 1):
    result *= i
    return result

    def main():
    count = 0
    num = input("Pls input the num: ")
    for i in range(0, int(num)+1):
    count += jc(i)
    print("count={0}".format(count))

    if __name__ == '__main__':
    main()

     4)、不定长参数

    def fun(a, *args, **kwargs):
    pass

    *args   代表list

    **kwargs   代表dict

    当传入的参数如下:
    fun(1, 2, 3, 4, 5 ,a=1, b=2)

    得到的结果是:
    a = 1

    args = 2, 3, 4, 5     tuple参数 对应赋值
    kwars ={"a": 1, "b": 2} dict参数 对应赋值

     5)、匿名函数

    5.1、python 使用 lambda 来创建匿名函数。

    • lambda只是一个表达式,函数体比def简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
    • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

    5.2、语法:

    lambda [arg1 [,arg2,.....argn]]:expression

    5.3示例:

    函数①和函数②是相等的:
    函数①:
    def add(x, y):

    return x+y

    函数②:
    lambda x, y: x+y
  • 相关阅读:
    【Linux】gvim封装至gvi命令
    unity, GUI.Button texture is black
    建了个百度贴吧:图形底层吧
    unity, imageEffect在android上不显示的问题
    3dmax fx shader, vertex color
    unity, editorWindow lose data when enter play mode
    unity, undo
    unity, editorWindow update计时
    unity, imageEffect的最后一步blit所用的shader,应该关闭zwrite和ztest
    unity, GUIStyle and Skin
  • 原文地址:https://www.cnblogs.com/Jweiqing/p/8824618.html
Copyright © 2020-2023  润新知