python文件操作归纳

文件内容

比如 1.txt 里面内容为

one test data
two hello
three ok

读文件

读取文件首先要以读方式打开一个文件之后对文件进行读取,以下为 一个文件读取的基本框架(未考虑异常处理)

1
2
3
4
5
6
7
8
9
10
# 文件路径全路径或者相对路径
filename = '1.txt'
# 以读方式打开文件
file = open(filename, 'r')
#文件读取操作
# ......
# 关闭文件
file.close()

  1. 使用read()方法,可以一次读取文件中的所有内容
    1
    2
    str = file.read()
    print(str)

结果为

one test data
two hello
three ok

  1. 使用readline,可以读取文件中的一行
    1
    2
    str = file.readline()
    print(str)

结果为

one test data

  1. 使用readlines,可以读取文件中的所有行,返回的是列表,文件中每一行为列表的一项
    1
    2
    str = file.readlines()
    print(str)

结果为

[‘one test data\n’, ‘two hello\n’, ‘three ok’]

写文件

写文件和读文件类似,
对应的打开文件的时候打开方式为写

1
file = open(filename, 'w')

对应的写文件方式为

  1. write方法

    1
    2
    str='test'
    file.write(str)
  2. writeLine方法,与write方法类似,但是在文件中字符串后面加一个换行

    1
    2
    str='test'
    file.writeLine(str)
  3. writeLines方法,可以将多行文本写入文件

    1
    2
    3
    4
    strs='''hello
    world
    123'''
    file.writeLines(strs)

随机读写

1
2
3
4
5
#file.seek(offset[,whence])
file.seek( 0, 0) #移动文件指针到文件开头
file.seek( 0, 2) #移动文件指针到文件结尾
file.seek(-1, 1) #文件指针往前移动一个字符
file.seek( 1, 1) #文件指针往后移动一个字符

将文件打操作标记移到 offset 的位置。这个 offset 一般是相对于文件的开头来计算的,一般为正数。
但如果提供了whence参数就不一定了,不同值对应的意义如下表:

whence值 意义
0 从头开始计算
1 前位置为原点计算
2 文件末尾为原点进行计算

需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾

文件读写模式

模式 代表的意义
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )

osshutil模块

  1. 目录操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#创建目录
os.mkdir("file")
# 复制文件夹
shutil.copy("oldfile","newfile") #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
# 复制文件夹
shutil.copytree("olddir","newdir") #olddir和newdir都只能是目录,且newdir必须不存在
# 重命名目录
os.rename("oldname","newname") #文件或目录都是使用这条命令
# 移动目录
shutil.move("oldpos","newpos")
# 转换目录
os.chdir("path") 换路径
  1. 文件操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#创建空文件
os.mknod("test.txt")
# 复制文件:
shutil.copyfile("oldfile","newfile") #oldfile和newfile都只能是文件
# 重命名文件
os.rename("oldname","newname") #文件或目录都是使用这条命令
# 移动文件
shutil.move("oldpos","newpos")
删除文件
os.remove("file")
转换目录
os.chdir("path") 换路径