1. 文件读写操作

读写文件是最常见的 IO 操作, Python 内置了读写文件的函数。
在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象。

文件打开方式

open(file, mode='r', buffering=None, encoding=None)

	open 函数在打开一个文件
file: 打开文件的目录路径
mode: 打开文件的方式,读写;
buffering: 缓冲 buffering 大小
encoding: 以什么格式打开,常见:utf-8, GBK

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

2. File 对象的属性

一个文件被打开后, 你有一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:

f = open('test.txt', 'r', encoding='utf-8')
print('文件名:', f.name)
print('是否已关闭:', f.closed)
print('访问模式:', f.mode) # 执行结果:
# 文件名: test.txt
# 是否已关闭: False
# 访问模式:r

3. 文件定位

(1)tell

获取被打开文件当前光标位置

f = open('test.txt', 'r', encoding='utf-8')
str1 = f.read(8)
print(str1)
print('光标当前位置:', f.tell())
f.close() # 执行结果:
# abcdefgh
# 光标当前位置: 8

(2)seek(offset [, from])

改变当前光标的位置,offset 变量表示要移动的字节数
    from 变量指定开始移动字节的参考位置
        from=0 将文件的开头作为移动字节的参考
        from=1 使用当前的位置作为参考位置
        from=2 该文件的末尾将作为参考位置

f = open('test.txt', 'r', encoding='utf-8')
# read 方法读取的是字符数,而不是字节数
str1 = f.read(8)
print('【读取前8个字符:】',str1)
print('【当前光标的位置(单位字节):】', f.tell())
# 使用 seek 方法将光标一定到文件开始位置
f.seek(0, 0) print('【当前光标的位置(单位字节):】', f.tell())
print('【读取文件所有内容:】', f.read()) # 执行结果:
# 【读取前8个字符:】 哪里有彩虹告诉我
#【当前光标的位置(单位字节):】24
#【当前光标的位置(单位字节):】0
#【读取文件所有内容:】哪里有彩虹告诉我能不能把我的愿望还给我

对文件内容操作的方法对应的操作单位:

根据各种模式,总结如下(+ 表示该模式能够使用的具体操作):

参考文档:

  http://www.runoob.com/python/python-files-io.html

[ Python ] 文件的读写操作的更多相关文章

  1. Python文件的读写操作

    Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1:  注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...

  2. 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)

    目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...

  3. python使用装饰器对文件进行读写操作'及遍历文件目录

    '''使用装饰器对文件进行读写操作''' # def check_permission(func): # '''演示嵌套函数定义及使用''' # def wrapper(*args,**kwargs) ...

  4. Python中xlrd、xlwt、win32com模块对xls文件的读写操作

    # -*- coding: utf-8 -*- #xlrd和xlwt只支持xls文件读写,openpyxl只支持xlsx文件的读写操作 import xlrd import xlwt import w ...

  5. INI 文件的读写操作

    在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...

  6. Android 对 properties文件的读写操作

    -. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...

  7. C++学习48 对ASCII文件的读写操作

    如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...

  8. Delphi- ini文件的读写操作

    一.读INI文件示例 procedure TForm1.FormCreate(Sender: TObject); Var MyIni :Tinifile; glAppPath :string; beg ...

  9. android报错及解决2--Sdcard进行文件的读写操作报的异常

    报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...

随机推荐

  1. [洛谷P5205]【模板】多项式开根

    题目大意:给你$n$项多项式$A(x)$,求出$B(x)$满足$B^2(x)\equiv A(x)\pmod{x^n}$ 题解:考虑已经求出$B_0(x)$满足$B_0^2(x)\equiv A(x) ...

  2. [洛谷P4111][HEOI2015]小Z的房间

    题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...

  3. 洛谷3794:签到题IV——题解

    https://www.luogu.org/problemnew/show/P3794 题目见上. 有一个套路(虽然我到现在还不会),就是固定一个端点,二分查右端点. 显然这题的正解是O(nlogn) ...

  4. [Leetcode] Binary tree postorder traversal二叉树后序遍历

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...

  5. BZOJ2597 [Wc2007]剪刀石头布 【费用流】

    题目链接 BZOJ2597 题解 orz思维差 既然是一张竞赛图,我们选出任意三个点都可能成环 总方案数为 \[{n \choose 3}\] 如果三个点不成环,会发现它们的度数是确定的,入度分别为\ ...

  6. BZOJ1303 [CQOI2009]中位数图 【乱搞】

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3086  Solved: 1898 [Submit][Sta ...

  7. bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)

    题目大意:给出n个数的序列,每次可以交换相邻的两个数,问把序列变成编号i在编号i+1左边,编号1在编号n右边(一个环)最少需要多少步.如:35421最少交换两次变为34512. 一开始看到这题,只会O ...

  8. bzoj2330: [SCOI2011]糖果(差分约束)

    差分约束裸题,a==b的话分别建a>=b a<=b的边就行.倒序加边不然会TLE是什么鬼 #include<iostream> #include<cstring> ...

  9. HDU5875 Function

    题意:给定序列,有m个区间的询问,求每个询问a[l]%a[l+1]...%a[r]后的值.(N<=10^5) 思路:这题如果使用线段树,可能会由于姿势和卡常数原因TLE,由于数据好像比较奇怪(? ...

  10. lambda表达式的应用例子和JavaSE 8特性

    在JavaSE 8 引入了lambda表达式,lambda表达式的引入带来的好处是:通过语法上的改进,减少开发人员需要编写和维护的代码数量.这个在下面使用和不使用lambda的对比中可以清晰看出来. ...