Heim >Backend-Entwicklung >Python-Tutorial >Python-Full-Stack-Road-Serie-Dateioperationen
Python kann Dateien anzeigen und erstellen sowie Dateiinhalte hinzufügen, ändern und löschen. Die verwendeten Funktionen sind open
in Python 3.5.x und werden in Python 2.7.x unterstützt. aber die Funktion file
wurde in der 3.5.x-Serie entfernt. open
file
Python-Dateiöffnungsmethode
文件句柄 = open('文件路径','打开模式')
Ps:Das Dateihandle entspricht dem Variablennamen, der Dateipfad kann als absoluter Pfad geschrieben werden oder als relativer Pfadpfad.
Modus zum Öffnen von Dateien in Python
模式 | 说明 | 注意事项 |
---|---|---|
r | 只读模式 | 文件必须存在 |
w | 只写模式 | 文件不存在则创建文件,文件存在则清空文件内容 |
x | 只写模式 | 文件不可读,文件不存在则创建,存在则报错 |
a | 追加模式 | 文件不存在创建文件,文件存在则在文件末尾添加内容 |
+
模式 | 说明 |
---|---|
r+ | 读写 |
w+ | 写读 |
x+ | 写读 |
a+ | 写读 |
b
模式 | 说明 |
---|---|
rb | 二进制读模式 |
wb | 二进制写模式 |
xb | 二进制只写模式 |
ab | 二进制追加模式 |
Tipp: WennMitim B-Modus geöffnet wird, ist der gelesene Inhalt vom Bytetyp, und der Bytetyp muss auch beim Schreiben von angegeben werden
Mit
-Modus+
b
模式 | 说明 |
---|---|
rb+ | 二进制读写模式 |
wb+ | 二进制读写模式 |
xb+ | 二进制只写模式 |
ab+ | 二进制读写模式 |
模式 | 说明 |
---|---|
read([size]) | 读取文件全部内容,如果设置了size,那么久读取size字节 |
readline([size]) | 一行一行的读取 |
readlines() | 读取到的每一行内容作为列表中的一个元素 |
hello.tx"
Hello Word! 123 abc 456 abc 789 abcread
Code:
Ausgabeergebnis:# 以只读的方式打开文件hello.txt f = open("hello.txt","r") # 读取文件内容赋值给变量c c = f.read() # 关闭文件 f.close() # 输出c的值 print(c)
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py Hello Word! 123 abc 456 abc 789 abcreadline
Code:
Ausgabeergebnis:# 以只读模式打开文件hello.txt f = open("hello.txt","r") # 读取第一行 c1 = f.readline() # 读取第二行 c2 = f.readline() # 读取第三行 c3 = f.readline() # 关闭文件 f.close() # 输出读取文件第一行内容 print(c1) # 输出读取文件第二行内容 print(c2) # 输出读取文件第三行内容 print(c3)
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py Hello Word! 123 abcreadlines
Ergebnis
# 以只读的方式打开文件hello.txt f = open("hello.txt","r") # 将文件所有内容赋值给c c = f.readlines() # 查看数据类型 print(type(c)) # 关闭文件 f.close() # 遍历输出文件内容 for n in c: print(n)Methode zum Schreiben von Python-Dateien
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py # 输出的数据类型 <class 'list'> Hello Word! 123 abc 456 abc 789 abc
write
代码:
# 以只读的模式打开文件write.txt,没有则创建,有则覆盖内容 file = open("write.txt","w") # 在文件内容中写入字符串test write file.write("test write") # 关闭文件 file.close()
write.txt
文件内容为:
test write
writelines
代码:
# 以只读模式打开一个不存在的文件wr_lines.txt f = open("wr_lines.txt","w",encoding="utf-8") # 写入一个列表 f.writelines(["11","22","33"]) # 关闭文件 f.close()
wr_lines.txt
文件内容:
112233
close(self):
关闭已经打开的文件
f.close()
fileno(self):
文件描述符
f = open("hello.txt","r") ret = f.fileno() f.close() print(ret)
执行结果:
3
flush(self):
刷新缓冲区的内容到硬盘中
f.flush()
isatty(self):
判断文件是否是tty设备,如果是tty设备则返回True
,否则返回False
f = open("hello.txt","r") ret = f.isatty() f.close() print(ret)
返回结果:
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py False
readable(self):
是否可读,如果可读返回True
,否则返回False
f = open("hello.txt","r") ret = f.readable() f.close() print(ret)
返回结果:
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py True
readline(self, limit=-1):
每次仅读取一行数据
f = open("hello.txt","r") print(f.readline()) print(f.readline()) f.close()
返回结果:
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py Hello Word! 123
readlines(self, hint=-1):
把每一行内容当作列表中的一个元素
f = open("hello.txt","r") print(f.readlines()) f.close()
返回结果:
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']
tell(self):
获取指针位置
f = open("hello.txt","r") print(f.tell()) f.close()
返回结果:
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py 0
seek(self, offset, whence=io.SEEK_SET):
指定文件中指针位置
f = open("hello.txt","r") print(f.tell()) f.seek(3) print(f.tell()) f.close()
执行结果
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py 0 3
seekable(self):
指针是否可操作
f = open("hello.txt","r") print(f.seekable()) f.close()
执行结果
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py True
writable(self):
是否可写
f = open("hello.txt","r") print(f.writable()) f.close()
执行结果
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py False
writelines(self, lines):
写入文件的字符串序列,序列可以是任何迭代的对象字符串生产,通常是一个字符串列表
。
f = open("wr_lines.txt","w") f.writelines(["11","22","33"]) f.close()
执行结果
112233
read(self, n=None):
读取指定字节数据,后面不加参数默认读取全部
f = open("wr_lines.txt","r") print(f.read(3)) f.seek(0) print(f.read()) f.close()
执行结果
C:\Python35\python.exe F:/Python_code/sublime/Day06/file.py 112 112233
write(self, s):
往文件里面写内容
f = open("wr_lines.txt","w") f.write("abcabcabc") f.close()
文件内容
abcabcabc
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f: 代码块
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2: pass
更多Python全栈之路系列之文件操作相关文章请关注PHP中文网!