从0.1开始学Python——[30]

文件的写入是文件读取之后需要学习的对文件的操作。

文件写入

最常用的方法是**.write()方法**,只能传入字符串。要注意一点,使用open()函数打开文件的时候,默认是读取文件的状态,而如果要进行写入,追加等操作,是需要进行设置的,因此不设置的情况下直接用写入方法将会报错。设置的方法也比较简单,就是open()里面再加一个参数。还要注意,写入状态下,不存在指定文件名的文件就会创建,已有文件那么将会删除目前文件名对应文件里面的所有内容。另外.write()方法不会换行,换行需要自己加\n。

with open(file_name,'w',encoding='utf-8') as wenjian:  # 'r'表示只读,'w'表示可写,'a'表示追加。
    wenjian.write('是不是\n')
    wenjian.write('全都得\n')
    wenjian.write('从新写\n')

运行之后查看ss文件里面发现:
在这里插入图片描述
另外,对象文件名.write()是有返回值的,返回值是字符串里面的字符的个数

文件追加

上面写的备注有说到,追加是参数’a’,这个状态就不会删除原有内容。

with open(file_name,'a',encoding='utf-8') as wenjian:  # 'r'表示只读,'w'表示可写,'a'表示追加。
    wenjian.write('是不是\n')
    wenjian.write('都不用\n')
    wenjian.write('从新写\n')

这时候文件里面就是:
在这里插入图片描述
此外还有’r+',表示可读又可写,'w+'和’a+'同理都是同时可读

新建文件

上面open()函数的参数如果写’x’,那就会新建文件,当然文件已存在的时候会报错。

file_name = 'bao/s'

with open(file_name,'x',encoding='utf-8') as wenjian:  # 'r'表示只读,'w'表示可写,'a'表示追加。
    wenjian.write('是不是\n')
    wenjian.write('都不用\n')
    wenjian.write('从新写\n')

可以看到出现了一个新文件,而且写入了内容:
在这里插入图片描述
不过不能创建二进制文件。想要读取或操作二进制文件,需要在字母参数后面加一个b,比如’r’写成’rb’。顺带一提,默认的是纯文本文件,而且是在字母参数后面加一个t,只不过默认是纯文本所以不用加,也就是说’r’相当于’rt’。注意,读取二进制文件的时候是是以字节为单位的,纯文本文件则是以字符为单位。二进制文件一般较大,所以建议分批读取

with open(file_name,'rb') as wenjian:
    print(wenjian.read())
b'\xe6\x98\xaf\xe4\xb8\x8d\xe6\x98\xaf\r\n\xe9\x83\xbd\xe4\xb8\x8d\xe7\x94\xa8\r\n\xe4\xbb\x8e\xe6\x96\xb0\xe5\x86\x99\r\n'

可以看到这样就都变成二进制字节了。

读取文件的位置

常用的方法是.tell()方法,可以知道当前读取到了文件里面的位置。

with open(file_name,'rb') as wenjian:
    print(wenjian.read(10))

    print(wenjian.tell())
b'\xe6\x98\xaf\xe4\xb8\x8d\xe6\x98\xaf\r'
10

另一个方法是.seek(),用于修改当前读取的位置。

with open(file_name,'rb') as wenjian:
    wenjian.seek(15)
    print(wenjian.tell())
15

.seek()方法还有一个参数,另一个表示计算位置的方式,有三个实参值:0,从头计算,默认值;1,从当前位置计算,也就是之前已经读到10就从10的位置继续计算输入字符(字节)数的位置;2,从末尾开始计算,而且读取可以输入负数,也就是可以从后往前读。

其他操作

除了打开之外,删除、重命名等等都是常见操作,只不过需要用到os模块
os.listdir(目录),获取指定目录结构,返回值是列表,默认路径是当前目录。

import os
import pprint


r = os.listdir()
pprint.pprint(r)

os.getcwd(),获取当前所在目录。

s = os.getcwd()
pprint.pprint(s)

os.chdir(目录),切换当前所在目录。

os.chdir()

os.mkdir(目录名),在当前目录下添加目录。

os.mkdir('123')
pprint.pprint(r)

os.rmdir(目录名),删除相应的目录。

os.rmdir('123')

os.remove(文件名),删除文件。
os.rename(旧名字,新名字),改文件名,新名字写成完整路径的形式可以达到剪切粘贴的效果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值