码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习-文件操作

时间:2018-07-13 01:16:11      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:直接   文件中   int   作文件   head   end   不同   打开   偏移量   

使用open函数创建文件对象, 然后就可以使用文件对象(file)常用的函数.

例: f = open(‘/path/to/targetfile/test.txt‘, mode=‘r‘, encoding=‘utf-8‘)

open函数参数说明:

  第一个位置: 文件名称

  第二个位置: mode 值, 决定了打开文件的模式: 只读(r), 只写(w), 追加(a)等. 默认为只读

  第三个位置: encoding 值, 读取的文件是用什么编码格式, 此处就用什么编码格式, 与读取文件一致即可

文件对象常用的函数

序号函数描述
1 file.read([size]) 从文件读取指定的字符数, 如果未指定size, 则读取文件中的所有内容
2 file.write(str) 将字符串写入文件, 返回的是写入的字符串的长度
3 file.close() 关闭文件对象
4 file.flush() 刷新文件内部缓冲, 直接把内部缓冲区的数据立刻写入文件
5 file.readline() 读取文件的一行, 包括换行符‘\n‘
6 file.readlines() 一次性读取文件的所有行, 返回一个列表, 列表中的单个元素是文件的单行的内容
7 file.seek(offset[,where]) 移动文件读取指针的位置<br />参数: <br />offset - 偏移量(单位: 字节)<br />where - 可选(3个值: 0 从文件开头偏移 1 从当前位置偏移 2 从文件末尾偏移)
8 file.truncate([size]) 截断<br />参数: size 指定时, 从文件开头阶段size个字节<br />size 未指定, 从当前位置截断至文件末尾, 当前位置值末尾内容被删除

 不同模式打开文件的完全列表

模式描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

在存储图片, 视频时指定二进制模式, 在做爬取存储图片时, 经常使用‘wb‘模式.

 

代码实例:

# 有testfile.txt, 内容为

我爱你中国
心爱的母亲
我为你流泪
也为你自豪

1. 读取文件

# 读取所有内容, 然后输出
f = open(testfile.txt, mode=r, encoding=utf-8) content = f.read() print(content) f.close()
# 一次读取所有行的内容, 遍历输出
f = open(testfile.txt, mode=r, encoding=utf-8)
file_lines = f.readlines()
for line in file_lines:
    print(line, end=‘‘)
f.close()
# 读取指定字符数
f = open(testfile.txt, mode=r, encoding=utf-8)
s = f.read(3)  # 注意此处是指字符数, 不是字节数, 如果代表字节数, utf-8编码一个中文占3个字节, 那么输出结果就应该为 ‘我‘
print(s)
f.close()

# 输出结果
我爱你

 

2. 写入文件

# 清空原有内容写入
f = open(testfile.txt, mode=w, encoding=utf-8)
f.write(真的很自豪)
f.flush()
f.close()

# 追加写入
f = open(testfile.txt, mode=a, encoding=utf-8)
f.write(真的真的很自豪\n)
f.close()

 

3. 操作文件的指针

# 操控文件读取指针位置
f = open(testfile.txt, r)
f.seek(3)   # 读取指针右移3个字节
print(f.read(2))  # 读取2个字符

f.seek(6)
print(f.read(1))

f.seek(3, 0)  # 读取指针从文件开头右移3个字节

print(f.read(1))
print(f.tell())  # 返回文件指针的当前位置

# f.seek(3,1)
print(f.readline())
# print(f.read())
f.close()

# 输出结果
爱你
你
爱
6
你中国

 

Python学习-文件操作

标签:直接   文件中   int   作文件   head   end   不同   打开   偏移量   

原文地址:https://www.cnblogs.com/gandoufu/p/9295608.html

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