Serie
- Python: Eine der Lernserien: Was kann Python?
- Python: Lernserie Nr. 2: Grundlegende Einführung (int / float / string / range / list / tuple / dict / set)
- Python: Lernserie III: Grundlegende Einführung 2
- Python: Lernserie 4: Interessante klassische mathematische Probleme
- Python: Lernserie 5: Klasse, Vererbung, Polymorphismus, Kapselung
- Python: Learning Series 6: Integrierte Funktionen von Objekten und spezielle Methoden von Klassenobjekten
- Python: Lernserie 7: Module, PIPY und Anaconda
- Python: Learning Series 8: Ausnahmebehandlung
- Python: Lernserie 9: Lesen und Schreiben von Dateien
- Python: Lernserie 10: Funktionen
Datei öffnen
file = open('myfile.txt','r') # 以只读方式打开文件;如果文件不存在,会抛出FileNotFoundError异常
file = open('myfile.txx','w') #以只写方式打开文件;如果文件存在则清空文件;如果文件不存在,会创建文件
file = open('myfile.txt', 'a') # 以只写追回加的方式打开;如果文件存在,从文件末尾开始写;如果文件不存在,会创建文件
file = open('myfile.txt', 'x') # 以只写方式打开文件;如果文件存在则抛出FileExistsError异常;如果文件不存在,会创建文件
file = open('myfile.txt','r+') #[不能单使用]以读写方式打开,r+/w+/a+/x+都以读写方式打开
file = open('myfile.txt', 'rt') # [不能单使用]以文本方式打开,默认就是以文本方式打开,rt/xt/wt等
file = open('myfile.txt', 'rb') # [不能单使用]以二进制方式打开,默认就是以文本方式打开,rb/xb/wb+等
Datei lesen
Erstellen Sie eine myfile.txt, der Dateiinhalt ist
1234567890
abcdefghij
xyz
"""
read([size]) size是字节数,,负数直接读到文件尾,指定的size不要超过默认的缓冲区的大小,否则可能并不能读取到指定的字节数,可以在io.DEFAULT_BUFFER_SIZE看到,为8192
"""
file = open('myfile.txt','r')
fileContent = file.read(3)
print(fileContent) # 123
fileContent = file.read()
print(fileContent) # 继续接着读,直到文件末尾 4567890\nabcdefghij\nxyz
file.close()
"""
readline([size]) size是字节数,负数直接读到文件尾
"""
file = open('myfile.txt','r')
fileContent = file.readline(3)
print(fileContent) # 123
fileContent = file.readline(10)
print(fileContent) # 继续接着读,最多读到行末尾 4567890\n
fileContent = file.readline(10)
print(fileContent) # 继续接着读下一行,abcdefghij
file.close()
"""
readlines([size]) size是字节数,负数直接读到文件尾
"""
file = open('myfile.txt','r')
fileContent = file.readlines(3)
print(fileContent) # ['1234567890\n'], 数组,它会读到当前size的行尾
fileContent = file.readlines(11)
print(fileContent) # ['abcdefghij\n', 'xyz'], 数组,它会读到当前size的行尾
file.close()
Datei schreiben
"""
write(text) 将指定文件写入到文件中,字符串会先写入缓存中,手动调用flush()或close()之后,
或者当写入的数据量大于等于缓存的容量时,写入到缓存中的字符串才会写入到文件中。
"""
file = open('myfile.txt', 'w') # 清空已存在的文件
size = file.write('1234567890')
print(size) # 10
file.flush()
file.close()
"""
writelines(seq) 将指定文件写入到文件中,字符串会先写入缓存中,手动调用flush()或close()之后,
或者当写入的数据量大于等于缓存的容量时,写入到缓存中的字符串才会写入到文件中。
"""
file = open('myfile.txt', 'w') # 清空已存在的文件
size = file.writelines(['1234567890\n','abcdefghij\n','xyz'])
print(size) # None
file.flush()
file.close()
Verwenden Sie die With-Anweisung, um die Datei eleganter zu schließen
"""
由于文件对象实现了特殊方法__enter__()和__exit__(),所以文件对象可以作为上下文管理器。
其中,特殊方法__enter__()返回打开的文件对象,特殊方法__exit__()中关闭打开的文件。
因此,可以使用with语句来实现文件的读写,省去手动关闭文件
"""
with open('myfile.txt','r') as file:
file.read()
file.write('something')
Dateizeiger
"""
自由移动文件指针
seek(offset[,whence]), offset表示偏移量,whence表示相对偏移位置,有三种取值:
1. os.SEEK_SET:文件的起始位置,值为0,默认值
2. os.SEEK_CUR:文件的当前位置,值为1
3. os.SEEK_END:文件的结尾位置, 值为2
只有以二进制方式打开的文件才支持以上三种相对偏移位置
以文本方式打开的文件,只支持相对偏移位置中的文件的起始位置
"""
with open('myfile.txt', 'rb') as file: # 以二进制方式打开
print(file.tell()) # 0
file.seek(3, os.SEEK_SET)
# file.seek(3,0) #与上一行的代码功能一样
# file.seek(3)#与上一行的代码功能一样
print(file.tell()) # 3
file.seek(4, os.SEEK_CUR)
print(file.tell()) # 7
file.seek(-2, os.SEEK_CUR) #向前偏移
print(file.tell()) # 5