码迷,mamicode.com
首页 > 其他好文 > 详细

3.文件操作及编码解码补充

时间:2020-01-25 10:29:53      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:flush   readline   代码块   详解   文件操作   文件内容   函数   开头   清空   

文件操作:
1.打开文件
f = open(name,mode)
name:文件名的字符串
mode:访问模式(只读,写入,追加等)
2.读写等操作
date = f.read()
3.关闭文件
f.close()

模式详解:如果省略书写访问模式,则访问模式默认为r或rb.通常只用主模式读写文件
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
1.有文件就读取,无文件则报错.
2.r模式不支持写入,用.write()函数则报错
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在?文件的开头。
rb+ 以二进制格式打开?一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。
1.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。只要执行w模式的open就清空原有文件
2.如果该文件不存在,创建新文件。
3.如果执行.write()会覆盖原有内容
wb 以?进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不不存在,创建新文件。
a 打开一个文件用于追加。
1.如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。
2.如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以?进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

读取函数(f = open("filename")
1.f.read(num) 参数num是指要从文件中读取的数据长度(字节),可省略,省略表示读取所有数据
2.f.readlines() 按行读取整个文件,返回一个列表,每行内容为一个元素,注意:readlines读取的每行包括换行符\n
3.f.readline() 一次读取一行内容

文件和文件夹操作(需要导入os模块import os)
1.重命名
os.rename("old_name","new_name") 可以操作文件及文件夹
2.删除
os.remove("file_name") 无此文件会报错
3.创建文件夹
os.mkdir("dir_name") 重复创建同名文件夹会报错
4.删除文件夹
os.rmdir("dir_name") 无此文件夹会报错
5.获取当前文件的路径
os.getcwd()
6.改变目录路径
os.chdir("dir_name") 无此文件夹会报错
7.获取目录列表
os.listdir("dir_name") 返回dir_name文件夹内所有文件文件夹列表,不写dir_name则为当前文件夹

读取文件示例:
对于读取到的某行进行进一步操作
for index,line in enumerate(f.readlines()):
if index == 9:
print("-----------分割线----------")
continue
print(line.strip())
以上对于第10行替换成分割线
readlines()一次读取全部文件内容,这种方法对于大文件读取非常不友好,慎用

count = 0
for line in f:
if count == 9:
print("-----------分割线----------")
count += 1
continue
print(line)
count += 1
这个方法采用迭代方式处理读取到的行数据,内存里只存储一行,常用

文件指针seek():用来移动文件指针
f.seek(偏移量,起始位置) 起始位置(0:文件开头 1:当前位置 2:文件结尾)

f.tell() 返回一个int,指示目前光标位置
f.encoding 不需要括号,返回一个字符串,当前打开文件的编码
f.seekable() 判断文件是否可以移动指针
f.readable() 判断文件是否可读
f.writeable() 判断文件是否可写
f.closed() 判断文件是否关闭
f.flush() 强制刷新
f.truncate(int) 从开头截取int个字符

with语句
with open("file_name","r") as f: with代码块执行完毕自动关闭文件
with open("file_name","r") as f1 , open("file_name","w") as f2: with语句支持同时打开多个文件

编码解码
查看当前默认字符编码集
import sys
sys.getdefaultencoding()











3.文件操作及编码解码补充

标签:flush   readline   代码块   详解   文件操作   文件内容   函数   开头   清空   

原文地址:https://www.cnblogs.com/huohu121/p/12232745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!