文件的基本操作with,open

在python中读取文件
open('文件名','打开文件的模式',encoding="utf-8")    # 普通文本文件TXT
    如果被打开的文件和当前文件在同一路径下,可以直接写相对路径即文件名
    如果被打开的文件和当前文件不在同一路径下,需要写绝对路径即文件完整的路径(此时注意绝对路径内可能含有转义符,需要使用r关闭转义)
文件名和打开文件的模式需要加引号,encoding='utf-8'可省略,省略时默认按gbk编码解码,这样可能会报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x9f in position 11: incomplete multibyte sequence,报错就需要使用encoding='utf-8'使用utf-8编码格式去进行解码

.read()  r读取文件内所有内容,如果文件不存在则会报错
.close()  关闭文件

f=open('test0515.txt','r',encoding='utf-8')    # mode='r',只读模式;打开文件;
content = f.read()    # 读取内容
print(content)
f.close() # 关闭文件,如果不关闭会把读取出来的内容暂时缓存到内存里占用空间
# 挑战年薪30W
# 我是你爹
f=open(r'D:\0423\pycharm\0424\0509\0509.txt','r',encoding='utf-8')    # 绝对路径内含有转义符,需要使用r关闭转义
content = f.read()
print(content)    python 40期
f.close()

.readline()  每次读取一行,逐行读取;如果.readline(8)则是读取该行索引为0到7的内容;如果需要读取多行可以配合for循环使用

f=open(r'test0515.txt','r',encoding='utf-8')
print(f.readline())    # 读取第一行
print(f.readline())    # 读取第二行
f.close()
python 第一行

1  第二行
f=open(r'test0515.txt','r',encoding='utf-8')
for i in range(2):
    print(f.readline())
f.close()
python 第一行

1  第二行

.readlines()  按行读取把所有的内容读取到一个列表中,每一行内容就是列表中的一个元素

f=open(r'test0515.txt','r',encoding='utf-8')
print(f.readlines())    # 按行读取把所有的内容读取到一个列表中,每一行内容就是列表中的一个元素,所以可以加索引读取指定的行数如第七行:f.readlines()[8]
f.close()    ['python 第一行\n', '1  第二行']

注意光标的位置,如下的错误示范,print(content2)是没有任何内容的;因为content1已经读取完全部内容,光标在文件内容的最后,所以f1.readline()读取不到任何内容
解决方法:1、使用f1.seek(0)移动光标位置到最开始位置
                  2、关闭文件重新打开再读取

f1 = open('py0518.txt','r',encoding='utf8')
content1 = f1.read()
print(content1)    # 已经读取完毕,光标在最后
content2 = f1.readline()
print(content2)
f1.close()    # 错误示范
f1 = open('py0518.txt','r',encoding='utf8')
content1 = f1.read()
print(content1)    # 已经读取完毕,光标在最后
f1.seek(0)    # 使用f1.seek(0)移动光标位置到最开始位置
content2 = f1.readline()
print(content2)
f1.close()    # 可正常读取
f1 = open('py0518.txt','r',encoding='utf8')
content1 = f1.read()
print(content1)
f1.close()
f2 = open('py0518.txt','r',encoding='utf8')    # 或使用先关闭文件再重新打开的方法
content2 = f2.readline()
print(content2)
f2.close()

.write()  w写入模式,覆盖写入(清除原来的内容,谨慎使用),如果文件不存在,则会在对应路径自动创建一个并写入对应内容
             a写入模式,追加写入(append),如果文件不存在,则会在对应路径自动创建一个并写入对应内容

f=open(r'test0515.txt','w',encoding='utf-8')    # w,写入模式;打开文件
print(f.write('dahanbi'))    7    # 写入内容,打印的是内容的长度
f.close()    # 关闭
f=open(r'test0515.txt','a',encoding='utf-8')    # a,写入模式;打开文件
print(f.write('1dahanbi'))    8    # 追加写入内容,打印的是追加写入内容的长度;可使用\n换行符
f.close()

rb:只读模式,以二进制的模式去打开,如果文件不存在则会报错
wb:写入模式,以二进制的模式去打开,覆盖写入(清除原来的内容),如果文件不存在,则会在对应路径自动创建一个并写入对应内容
ab:写入模式,以二进制的模式去打开,追加写入(append),如果文件不存在,则会在对应路径自动创建一个并写入对应内容
这三种模式通常用来读写非文本格式的文件,这种就不需要指定编码格式:
open('文件名','打开文件的模式')

# 复制图片,逻辑是先只读模式打开,再用写入模式复制
#第一步,打开文件
f1 = open('tupian_gif','rb')
f2 = open('fuzhi_gif','wb')    # 复制的格式需与原文件保持一致
# 第二步,读取内容,写入新文件
content = f1.read()
f2.write(content)
# 第三步,关闭文件
f1.close()
f2.close()

with  可以通过with去打开文件,操作完了之后会自动关闭文件,更为便捷
        with执行完之后变量还在,在with在打印读取内容会提示文件已关闭

with open('tupian_gif','rb') as f1:    # 使用with关键字打开文件并赋值给变量f1
    conten = f1.read()
with open('fuzhi_gif','wb') as f2:
    f2.write(conten)

当前目录下已经有一个子目录 common, 请在 run.py 中编写代码,在 common 目录下创建一个叫 excel.py 的模块

-- data/
-- common/
-- run.py
f = open('common/excel.py', 'w')
f.close()

复制文件名操作如下,在同一路径下右键选择copy即可,不在同一路径下右键选择copy path,然后选择第一个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值