python学习笔记——文件操作I/O

作为入门,我们将会学习一些基本的I/O操作,如果需要其他更高级的操作可以参考官方文档。

标准输入输出

也就是从屏幕读入或者从屏幕输出。
输出很简单,就是我们一直在使用的print,我就不举例了。
输入的话,主要是input,之前python2.x还有input_raw,但是python3已经把它删掉了,所以我们就只说input
input的参数是我们需要显示给用户的提示信息。
而用户的输入会作为input返回值从而被获取。
举个简单的例子:

name=input("您的名字是什么?")
print("您的名字是:",name)

打开和关闭文件

上面说了标准输入输出,接下来我们要开始学习对文件的读写了。

open函数

顾名思义,是用来打开一个文件的函数。
opne函数一共有三个参数:
第一个是我们要打开的文件的路径
第二个是我们要打开的方式(与C语言比较类似,稍后会讲解)
第三个是缓冲区大小,如果缺省或者设置为负值会采用系统默认的缓冲区大小,如果是正数,那这个数就是缓冲区的大小,如果是0,则不缓冲。
我们先举个例子:

fi=open("D:\\cgg.txt","r")
fi=open("D:\\cgg.txt","r"10)

下面我们来详细说一下参数。
第一个参数没有什么好说的,只需要提一点,那就是如果要读取的文件和程序在同一个路径下,只要写文件名即可,不需要写出完整的路径,否则需要写完整。
第二个参数是用来表示这个流的性质。有的如下表:

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

当然了,你并不需要把这个背下来(除非你要考试)。
需要用的时候查一下就好了。把几个常用的记下就好。
我们可以对上面这个表做一下简单的整理:

模式 r r+ w w+ a a+
+ + + +
+ + + + +
创建 + + + +
覆盖 + +
指针在开始 + + + +
指针在结尾 + +

File的属性

我们上面的那个例子,实际上是用open创建了一个file对象,那么file有什么属性呢?
file一共有四个属性:

属性 描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。

我们可以举个例子:

fi=open("D:\\cgg.txt","r")
print(fi.closed)
print(fi.mode)
print(fi.name)

输出结果如下:False r D:\cgg.txt(换行略去)
这三个属性应该是比较好理解的,我就不多说了。

close方法

如字面意思,是用它关闭文件的,把缓冲区里剩下的数据写入内存,或者写入硬盘。
使用也很简单:

fi=open("D:\\cgg.txt","r")
print(fi.closed)
fi.close()
print(fi.closed)

运行结果:false true

读写文件

我们不可能只是打开和关闭文件,我们肯定要读取或者写入数据,所以我们就来学习一下读写的方法。

write方法

write可以将字符串写入文件。
我们举个例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()

这里就成功地把cgg写入了cgg.txt

read方法

read用来从文件中读取字符串。
它有一个可以缺省的参数,用来指定读取的字节数。
如果缺省,它会读尽可能多的数据,可能直到文件结束。
举个例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)

这样我们就成功的把我们之前写入的cgg又读取出来了。

文件定位

我们直到,我们在打字的时候,或者说像我此时此刻在打blog一样,我们屏幕上会闪烁着光标,来表示我们接下来的输入的位置。读取或写入文件也是一样,我们也需要直到,我们当前的”光标“在哪,甚至必要的时候对它进行必要的操作。

tell方法

tell方法可以告诉我们,我们的”光标“在距离文件开头多少字节的位置,比如:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
print(fi.tell())
fi.close()

运行结果是3

seek方法

seek是帮助我们改变光标位置的方法。
它有两个参数
第一个是偏移量,也就是我们要移动多少字节。
第二个是参考位置,它有三种标号,0是从文件开始处,1表示从当前位置,2表示从文件末尾。
我们举个例子:

fi=open("D:\\cgg.txt","w")
fi.write("cgg")
fi.seek(2,0)
fi.write("ggc")
fi.close()
fi=open("D:\\cgg.txt","r")
gcg=fi.read()
print(gcg)

运行结果是::cgggc

重命名和删除文件

对文件进行读写是不需要什么模块的,但当我们想对文件进行一些操作时,我们就需要一些模块的帮助了。
我们今天要用的就是os模块,它可以帮助我们重命名或删除文件。

rename方法

rename是用来重命名的函数,它有两个参数,一个是以前的名字,一个是要改成的名字。
我们看个例子:

import os
os.rename("D:\\cgg.txt","D:\\ggc.txt")

这样,文件就从cgg变成了ggc

remove方法

这个方法,只有一个参数,就是要删除的文件。
例子如下:

os.remove("D:\\ggc.txt")

这样就ok了。

python对目录的操作

我们除了可以操作文件,我们也可以操作文件夹。

mkdir方法

依然是在os模块下,他只有一个参数,就是要创建的目录的名字和路径。
比如:

os.mkdir("D:\\cggggc")

chdir方法

这个方法是用来改变当前目录。
什么意思?
还记得之前我说的吗?如果文件不在当前目录下,就需要写出完整的路径
而这个方法就是用来设置当前目录的。
比如:

os.chdir("D:\\")
os.mkdir("cggggc")

这两个语句和上面mkdir的例子是等价的。

getcwd方法

既然有改变当前目录的方法,肯定有获取当前目录的方法,这就是getcwd:

os.chdir("D:\\")
print(os.getcwd())

这个运行结果就是输出D盘

rmdir方法

既然有了新建目录,肯定也可以删除。
这就是rmdir做的:

os.rmdir("cggggc")

那么今天的学习基本就结束了,更多的方法和函数我们以后有时间再学习。

发布了231 篇原创文章 · 获赞 47 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章