java中的接口是类吗
360
2022-08-26
python中常用的文件和目录操作(一)
常用的文件操作
1. 打开文件
open,它是一个内置函数,可以直接调用语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象参数:file_name--要访问的文件名称的字符串值,access_mode--决定了打开文件的模式:只读、写入、追加等。这个参数是非强制的,默认文件访问模式为只读(r)返回值:返回一个文件对象
模 式 | 解释 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果不存在,则创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果不存在,则创建新文件 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾。也就是说,新的内容将会被写入已有内容之后。如果该文件不存在,则创建新文件进行写入 |
a+ | 打开一个文件用于写入。如果文件已存在,文件指针将会放在文件的末尾。文件打开时会是追加模式。如果文件不存在,则创建新文件用于读写 |
2. 关闭文件: file_object.close()
3. 文件的读写操作
read()方法:
read(size=-1)方法从一个打开的文件中读取一个字符串参数: size--传递你要读取的字节数,如果不传递,默认是-1,读取所有的数据,读完了之后。指针会定位到读完之后的位置返回值: size=0,返回b"",size<0,返回读取的所有的字节数,size>0,返回指定的字节数
readline()方法:
从文件读取整行,包括"\n"字符参数:size--如果传递一个非负的参数,返回指定大小的字节数返回值:返回从字符串中读取的字节
readlines()方法:
读取所有的行并返回字符串列表,如果碰到EOF则返回空字符串参数:无返回值:返回所有的字符串列表
write()方法:
write()方法可将任何一个字符串写入一个打开的文件注意:write()方法不会在字符串的结尾添加换行符("\n"),所以无法实现自动换行。需要自己手动添加"\n"来实现换行
writelines()方法:
传入你要写的列表内容,就可以写入多行
4. 示例
假设在pycharm的工作目录下新建了一个test.txt的文本文件,由于包含中文,我们保存时设置编码为"utf-8"。文件内容如下:
name: Peterage: 29height: 175weight: 70country: 英国hobby: play-guitar
读的方法
#open()和read()方法fo = open("test.txt")content = fo.read()print(content)结果:锘縩ame: Peterage: 29height: 175weight: 70country: 鑻卞浗hobby: play-guitar乱码了,我们可以这样解决:fo = open("test.txt", encoding="utf-8")content = fo.read()print(content)结果:name: Peterage: 29height: 175weight: 70country: 英国hobby: play-guitar#readlines()方法fo = open("test.txt", encoding="utf-8")lines = fo.readlines()print(lines)['\ufeffname: Peter\n', 'age: 29\n', 'height: 175\n', 'weight: 70\n', 'country: 英国\n', 'hobby: play-guitar\n', '\n']
写的方法
write()方法:如果文件已存在,会覆盖
#write()方法fo = open("test.txt", "w")fo.write("city: London")fo.close()我们打开test.txt文件会发现,文件只剩下:city: London
注意:在同一个w模式下,两次写入时,第一次写入会已经存在的内容,第二次写入不会覆盖第一次写入的内容(可以理解为指针移了)
fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,")fo.write("第二次写入不会覆盖第一次写入的内容")fo.close()结果:第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容
write()无法实现自动换行,需要手动添加"\n"来实现换行
fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,\n")fo.write("第二次写入不会覆盖第一次写入的内容")fo.close()结果:第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容
writelines()传递列表来写入多行,不会自动换行,需手动添加
fo = open("test.txt", "w", encoding="utf-8")fo.write("第一次写入会覆盖已经存在的内容,\n")fo.write("第二次写入不会覆盖第一次写入的内容\n")fo.writelines(["111111\n", "222222\n"])fo.close()结果第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容111111222222
追加的方法
fo = open("test.txt", "a", encoding="utf-8")fo.write("哈哈哈哈哈哈")fo.close()结果:第一次写入会覆盖已经存在的内容,第二次写入不会覆盖第一次写入的内容111111222222哈哈哈哈哈哈
5. 文件定位
tell()和seek()方法详见:【译】:文件对象的方法
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~