其他分享
首页 > 其他分享> > Knight_day8

Knight_day8

作者:互联网

    文件路径:d:abc.txt

      绝对路径:从根目录开始

      相对路径:当前文件夹

    编码方式:utf-8,gbk,gb2312等

    操作方式:只读,只写,写读,读写,追加等。

f = open(r'd:\abc.txt', encoding='utf-8', mode='r')
content = f.read()
print(content)
f.close()
'''
f:变量。也写作f_obj, f_handler, f_h, fh等,文件句柄。
open():python内置函数(内部调用的是相应系统的命令如Windows)
\发生歧义,1.在路径前加r  2.每个\变成\\ '''

    流程:1.打开文件,产生文件句柄。

       2.对文件句柄操作。

       3.关闭文件句柄

    总而言之,注意光标位置。

    rb:文件操作中凡是带b,都是与非文字类文件相关的。(b为bytes,不用encoding)

    r模式的读操作:

      1.read() 全部

      2.read(n) 指定读的字符数。rb模式下n为字节数

      3.readline() 按行读,超过了读空白,可指定n读几个字符,n >= 当前行字符数,或不写 --> 全读。n < 当前行字符数 --> 读n个字符

#while循环实现读取全部内容
f = open(r'd:\123.txt', encoding='utf-8', mode='r')
#先读取一行
res = f.readline()
#不为空,开始循环
while res:
    print(res)
    res = f.readline()

      4.readlines() 按行读,返回列表

      5.for循环(1.内存中只占一条,避免全读内存不够 2.文件句柄是可迭代对象)

        for line in f:

          print(line.strip())

        f.close()

    r+:先读,光标移到到最后,再写,写在最后,光标也在最后。

      先写,光标在开头,覆盖相应字节(注意是字节),再读,从覆盖写入的结尾开始读。

      即,光标默认在开头。

    没有文件就创建,有文件先清空,再写入

    写入内容只能是str或bytes

#复制图片
#先读再写
f = open('hunian.jpg', mode='rb')
content = f.read()
f.close()

f = open('xiaohu2.jpg', mode='wb')
f.write(content)
f.close()

#利用with整合代码
#注意:with方法不需要close
with open('hunian.jpg', mode='rb') as f1, open('xiaohu2.jpg', mode='wb') as f2:
    content = f1.read()
    f2.write(content)

    w+:可写可读,不能只读,没有就创建,每次先清空再写入。

    没有文件就创建,有文件在内容最后追加,换行追加可以在追加内容前加换行符\n

    a+:可写可读,没有文件就创建,默认光标在尾部,不管如何移动,强制末尾写入。

    readable():是否可读

    writable():是否可写。返回T/F

    seek():按字节位置移动光标。seek(0)移动到开头。seek(0, 2)移动到末尾(2代表从右向左)。注意点:有可能把光标移动到某个字符的字节中。

    tell():返回光标左侧所有字节数。

    truncate():把要截取的字符串提取出来,清空内容将提取的字符串重新写入文件中(按字节)。

    writelines():将内容是字符串的可迭代数据写入文件,需同时满足。如全为字符串的列表。

 

标签:文件,day8,Knight,content,mode,句柄,open,光标
来源: https://www.cnblogs.com/hlzzhq/p/15876306.html