Note Chapter 7 File Handling
定义文件路径
要读取或写入文本文件时,必须首先确定要写入或读取哪个文件。
读取和写入文件
要对文件进行写入或读取时,首先要告诉操作系统要打开文件进行读取或写入。 读取时,将文件内容读入字符串变量。写入将字符串变量的内容写入文件。读写完成后关闭文件。 从文件中读取文本需要三个步骤:
打开要读取的文件。
从文件中读取(通常读入字符串变量)。
关闭文件。 以下是语法:
# Program
#file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
# Program
f=open('abc.txt')
f.read()
'My first file\nthis file\ncontain three line\nappended data\nmore data\nwebsite\n\n \n\n\n'
不同模式打开文件的完全列表:
模式 描述 t 文本模式 (默认)。 x 写模式,新建一个文件,如果该文件已存在则会报错。 + 打开一个文件进行更新(可读可写)。 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
将文本写入文件需要三个类似的步骤:
打开要写入的文件。
将字符串(通常来自字符串变量)写入文件。
关闭文件。 我们声明变量 f 来打开名为 myfile.txt 的文件。 Open 需要两个参数,一个是我们要打开的文件和一个字符串,字符串表示我们要对文件执行的权限或操作类型。 在这里,我们在参数中使用了 "w",表示新建并写入于库中不存在的文件。加号表示读和写。
# Program
f= open("myfile.txt","w+")
for i in range(10):
f.write("This is line %d\r\n" % (i+1))
关闭文件
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。 当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
# Program
#fileObject.close()
f= open("myfile.txt","w+")
f.close()
文件定位
tell()
方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])
方法改变当前文件的位置。Offset
变量表示要移动的字节数。From
变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
# Program
# Open the file in write mode and write some content to it
f= open("1.txt","w+")
for i in range(10):
f.write("This is line %d\r\n" % (i+1))
f.write("Hello, this is a test file.")
# Move the file pointer to the beginning of the file
f.seek(0)
# Read the first 10 characters from the file
str = f.read(10)
print("读取的字符串是 : ", str)
# 查找当前位置
position = f.tell()
print("当前文件位置 : ", position)
# 把指针再次重新定位到文件开头
position = f.seek(0, 0)
str = f.read(10)
print("重新读取字符串 : ", str)
# 关闭打开的文件
f.close()
读取的字符串是 : This is li
当前文件位置 : 10
重新读取字符串 : This is li
Last updated