• Python学习-文件的调用-读取


     

    1.文件的打开

    open('filename'[,mode[,buffering]])

    #这个一定要记得关文件。close.() 

    filename,要以路径的形式展示,比如在"c:"中,则要这样写: r'c:filename'

                   如果不用路径展示,那就用'filename'.其会在执行文件所在的文件夹进行搜索。

    mode的格式有几种:

    ‘r’,  read,  读取模式;

    'w’,  write,写入模式;

    'a', add, 添加模式;

    '+', 读/写模式;

    'b', 二进制模式;注意‘rb’参数可以用来读取二进制文件;

    主要使用的模式是前面三种。

    buffering是缓冲,参数为,0, 1,以及大于1的数字和-1。

    0,表示不用缓冲,直接读写硬盘;

    1,表示启用缓冲(即内存);

    大于1的数字,表示缓冲的大小(单位是字节)

    -1,表示默认的缓冲大小。

    with open('filename') as file_object:   #这种方式可以自己关文件,但是后续有关在文件运作的内容都要是在其下一级。但是赋值出来后的结果可以稳定的。


    with open(r'e:first weekusername.txt','r') as f:

    for i in range(2):
    r_username = 'The %s username is %s'%(i,f.readline())
    print(r_username)
    print(r_username)

    结果如下:

    The 0 username is zhangyixiao

    The 1 username is yingkuqi
    The 1 username is yingkuqi

    2.读

    首先,打开文件后,如:

    f = open('filename','r')  #使用了名为f的对象来调用,(不用好像不能调用),然后使用'r'模式(ps,可以省略,因为是默认的)

    f.read(n)  # n,表示读取多少字符,如果没有n就表示把之前未读取的,全部读取出来。

    f.readlines()  #这个是读取出所有行,输出的结果会是一个列表,每一行作为一个元素存储在里面。

    f.readline(n) # n 表示可以读取的字符数目的最大值,从0开始,没有写表示按次序来。 如果要消除尾部的换行符' ',可以在后面加上rstrip.()

    如:

    f.readline().rstrip()

    $$一定要记住!这个read,readines,readline的功能中,如果之前有读取过的,它就不再读取了。包括使用readlines,read,readline进行读取的内容

    如果想要读取特定某一行,可以利用 一个指针以及for i in range(n)的结构来实现:

    password = input("Please enter your password:")


    passwd = open(r'e:first weekpasswd.txt', 'r')
    for l in range(2):        #l作为指针指示第几行
    passwd_buffer = passwd.readline().rstrip()
    if l == j: #如果l与登录用户的顺序j一致,则进入之后的判断
    if password == passwd_buffer:
    print("yes,%s is in!"% username)
    break
    else:
    print("Your password is wrong!")
    count += 1
    with open(r'e:first weekpasswd.txt', 'r+') as file_pass:
        for i in range(2):
            print(file_pass.readline())
    
    
    #打开文件,赋值给内存中的一个值,然后操作,会自动关闭
    with open(r'e:first weeksong.txt', 'r') as test:
        #print(test.read())  #读取
        for i in range(10):
            print('%i:' % i, test.readline())  # 这个形式就是反复执行几次,readline是按照行一个个执行的,之前读取过的不会再读取
        print('test print', test.readline())
        test2 = test.readlines().copy()  #全部读取,输出的结果是一个列表,之前读取过的不会再读取
        print(test2)
        #打印出文件中的每一行:
        for line in test2:   #这样,line代表列表中的每一个元素(就是一行),输出就是每一行的信息
            print(line.strip())         #strip可以取出空格和换行
    
    print('测试是否会自动关闭test', test)   #会自动关闭的
    #换一个形式就可以解决之前读取过的数据不能读取的问题
    #采用利用readlines,再进行浅copy,就可以方便进行各种的操作
    #但是会出现一个新的变量,且不会自动关闭,这样就占用了更多的内存,可以用del来释放变量
    with open(r'e:first weeksong.txt', 'r') as test0:
        test = test0.readlines().copy()  #把这个文件的东西作为列表复制出来
        # print(test.read())  #读取
        for i in range(10):
            print('%i:' % i, test[i].strip())  # 这个形式就是反复执行几次,readline是按照行一个个执行的,之前读取过的不会再读取
        print('test print', test)
        test2 = test0.readlines().copy()  # 因为之前已经读取过了,所以输出的结果空的列表
        print(test2)
    
            # 打印出文件中的每一行:
        for line in test:  # 这样,line代表列表中的每一个元素(就是一行),输出就是每一行的信息
            print(line.strip())  # strip可以取出空格和换行
    
    
    print('测试是否会自动关闭test', test)   #不会自动关闭,这样就占用了较多的内存了。但是通过del去除变量就可以释放了
    del test            #但是通过del去除变量就可以释放了
    #尝试使用enumerate来判定读取的是哪一行数据
    with open(r'e:first weeksong.txt', 'r') as test:
        for index, line in enumerate(test):
            if index == 9:
                print('The 10th line is:', line)
    
    print('测试是否会自动关闭test', test)  # 但是重新利用文件的赋值方式进行赋值之后,就可以关闭。不过要尽量避免这样的情况出现。

    3.写
    简单的格式是
    with open(filename,'w') as file:
    file.write("contents")

    在w的打开方式下,如果目录里面没有这个文件,这个文件会被创建;如果有,就会被覆盖(所以仔细考虑用'a',还是用'w')
    ‘a’模式下,不会覆盖,只会添加,但是这个模式不能读取的;

    如果要写入多行数据,可以采用的形式是:
    with open(filename,'w') as file:
    file.write("contents ")
      file.write("contents ")


    4.其他
    一个break只能跳出当前的一个for循环或者while循环;
  • 相关阅读:
    一只特立独行的猪
    每天写出好代码的5个建议
    电脑修好了
    VB编程修改AutoCAD长度型尺寸标注
    前天我放学回家
    VB编程修改AutoCAD坐标型尺寸标注
    VB编程操作AutoCAD尺寸标注样式
    这是一个错误的程序
    2011年6月27日星期二
    2011年6月20日星期一
  • 原文地址:https://www.cnblogs.com/Ian-learning/p/7707135.html
Copyright © 2020-2023  润新知