Opérations sur les fichiers Python Full Stack Road Series

高洛峰
Libérer: 2017-02-15 15:02:45
original
1400 Les gens l'ont consulté

Python peut afficher et créer des fichiers, et peut ajouter, modifier et supprimer le contenu des fichiers. Les fonctions utilisées sont open dans Python 3.5.x et sont prises en charge dans Python 2.7.x et file. mais la fonction open a été supprimée dans la série 3.5.x. file

Méthode d'ouverture de fichier Python

文件句柄 = open('文件路径','打开模式')
Copier après la connexion

Ps : Le handle de fichier est équivalent au nom de la variable, le chemin du fichier peut être écrit sous forme de chemin absolu ou comme chemin de chemin relatif.

Mode d'ouverture de fichiers en Python

Mode de base

模式 说明 注意事项
r 只读模式 文件必须存在
w 只写模式 文件不存在则创建文件,文件存在则清空文件内容
x 只写模式 文件不可读,文件不存在则创建,存在则报错
a 追加模式 文件不存在创建文件,文件存在则在文件末尾添加内容
Mode avec

模式 说明
r 读写
w 写读
x 写读
a 写读
Avec

mode b

模式 说明
rb 二进制读模式
wb 二进制写模式
xb 二进制只写模式
ab 二进制追加模式

Astuce : Lorsque est ouvert en mode b, le contenu lu est de type octet, et le type d'octet doit également être fourni lors de l'écriture de

Avec

Avec le mode b

模式 说明
rb 二进制读写模式
wb 二进制读写模式
xb 二进制只写模式
ab 二进制读写模式
Méthode de lecture de fichier Python

模式 说明
read([size]) 读取文件全部内容,如果设置了size,那么久读取size字节
readline([size]) 一行一行的读取
readlines() 读取到的每一行内容作为列表中的一个元素
Le nom du fichier testé est

, fichier Le contenu est : hello.tx"

Hello Word!
123
abc
456
abc
789
abc
Copier après la connexion

lire

Code :

# 以只读的方式打开文件hello.txt
f = open("hello.txt","r")
# 读取文件内容赋值给变量c
c = f.read()
# 关闭文件
f.close()
# 输出c的值
print(c)
Copier après la connexion
Résultat de sortie :

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
Hello Word!
123
abc
456
abc
789
abc
Copier après la connexion

readline

Code :

# 以只读模式打开文件hello.txt
f = open("hello.txt","r")
# 读取第一行
c1 = f.readline()
# 读取第二行
c2 = f.readline()
# 读取第三行
c3 = f.readline()
# 关闭文件
f.close()
# 输出读取文件第一行内容
print(c1)
# 输出读取文件第二行内容
print(c2)
# 输出读取文件第三行内容
print(c3)
Copier après la connexion
Résultat de sortie :

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
Hello Word!

123

abc
Copier après la connexion

readlines

# 以只读的方式打开文件hello.txt
f = open("hello.txt","r")
# 将文件所有内容赋值给c
c = f.readlines()
# 查看数据类型
print(type(c))
# 关闭文件
f.close()
# 遍历输出文件内容
for n in c:
    print(n)
Copier après la connexion
Résultat

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
# 输出的数据类型
<class &#39;list&#39;>
Hello Word!

123

abc

456

abc

789

abc
Copier après la connexion
Méthode d'écriture de fichiers Python

write

代码:

# 以只读的模式打开文件write.txt,没有则创建,有则覆盖内容
file = open("write.txt","w")
# 在文件内容中写入字符串test write
file.write("test write")
# 关闭文件
file.close()
Copier après la connexion

write.txt文件内容为:

test write
Copier après la connexion

writelines

代码:

# 以只读模式打开一个不存在的文件wr_lines.txt
f = open("wr_lines.txt","w",encoding="utf-8")
# 写入一个列表
f.writelines(["11","22","33"])
# 关闭文件
f.close()
Copier après la connexion

wr_lines.txt文件内容:

112233
Copier après la connexion
Copier après la connexion

Python文件操作所提供的方法

close(self):

关闭已经打开的文件

f.close()
Copier après la connexion

fileno(self):

文件描述符

 f = open("hello.txt","r")
ret = f.fileno()
f.close()
print(ret)
Copier après la connexion

执行结果:

3
Copier après la connexion

flush(self):

刷新缓冲区的内容到硬盘中

f.flush()
Copier après la connexion

isatty(self):

判断文件是否是tty设备,如果是tty设备则返回True,否则返回False

f = open("hello.txt","r")
ret = f.isatty()
f.close()
print(ret)
Copier après la connexion

返回结果:

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
False
Copier après la connexion
Copier après la connexion

readable(self):

是否可读,如果可读返回True,否则返回False

f = open("hello.txt","r")
ret = f.readable()
f.close()
print(ret)
Copier après la connexion

返回结果:

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
True
Copier après la connexion
Copier après la connexion

readline(self, limit=-1):

每次仅读取一行数据

f = open("hello.txt","r")
print(f.readline())
print(f.readline())
f.close()
Copier après la connexion

返回结果:

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
Hello Word!

123
Copier après la connexion

readlines(self, hint=-1):

把每一行内容当作列表中的一个元素

f = open("hello.txt","r")
print(f.readlines())
f.close()
Copier après la connexion

返回结果:

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
['Hello Word!\n', '123\n', 'abc\n', '456\n', 'abc\n', '789\n', 'abc']
Copier après la connexion
  • tell(self):

获取指针位置

f = open("hello.txt","r")
print(f.tell())
f.close()
Copier après la connexion

返回结果:

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
0
Copier après la connexion

seek(self, offset, whence=io.SEEK_SET):

指定文件中指针位置

f = open("hello.txt","r")
print(f.tell())
f.seek(3)
print(f.tell())
f.close()
Copier après la connexion

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
0
3
Copier après la connexion

seekable(self):

指针是否可操作

f = open("hello.txt","r")
print(f.seekable())
f.close()
Copier après la connexion

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
True
Copier après la connexion
Copier après la connexion

writable(self):

是否可写

f = open("hello.txt","r")
print(f.writable())
f.close()
Copier après la connexion

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
False
Copier après la connexion
Copier après la connexion

writelines(self, lines):

写入文件的字符串序列,序列可以是任何迭代的对象字符串生产,通常是一个字符串列表

f = open("wr_lines.txt","w")
f.writelines(["11","22","33"])
f.close()
Copier après la connexion

执行结果

112233
Copier après la connexion
Copier après la connexion

read(self, n=None):

读取指定字节数据,后面不加参数默认读取全部

f = open("wr_lines.txt","r")
print(f.read(3))
f.seek(0)
print(f.read())
f.close()
Copier après la connexion

执行结果

C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py
112
112233
Copier après la connexion

write(self, s):

往文件里面写内容

f = open("wr_lines.txt","w")
f.write("abcabcabc")
f.close()
Copier après la connexion

文件内容

abcabcabc
Copier après la connexion

同时打开多个文件

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f:
 代码块
Copier après la connexion

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:

with open('log1') as obj1, open('log2') as obj2:
    pass
Copier après la connexion

更多Python全栈之路系列之文件操作相关文章请关注PHP中文网!



Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal