对文件操作首先需要找的文件的路径,os.path 模块可以很好地对路径进行操作问题。
目录
- 文件读写
- 打开文件
- 读取内容
- 写入内容
- 关闭文件
- 结构数据
- 变量读写
文件读写
读写文件有3个步骤:
- 调用
open()
函数打开文件,返回file
对象; - 调用
File
对象的read()
或write()
方法读或写文件; - 调用
File
对象的close()
方法,关闭文件。
打开文件
向 open()
函数传入一个路径,表示需要打开的文件,既可以是相对路径,又可以是绝对路径,返回file
对象。
file = open('test.txt') # 这里用的是相对路径
这个命令将以读模式打开文件,也即只允许从文件中读取数据,而不能写入或修改。如果需要写入文件,则需要传入第 2 个参数 w
或 a
,表示写模式或添加模式,两者区别将在下文叙述。
file = open('test.txt', 'w')
第 2 个参数可以是 r
表示只读,与默认情况相同。r+
表示既可读又可写。
读取内容
获取了 file
对象后,可利用 read()
方法读取文件内容,如
file.read(size)
该方法将读取 size
大小的文本,形成一个大的字符串。如果 size
省略或为负,则读取整个文本。如果已经读到了文件末尾,则返回空字符串。
如果需要读取文本中的一行则需要使用 readline()
方法。readlines()
方法可以读取所有的行,list(file)
也可以完成。
file.readline()
file.readlines()
list(file)
读取内容时会自动获取文本最后的换行符
\n
。
文件在读取过程中有一个指针,表示读取的位置,可用 tell()
方法获取。
file.tell()
使用 seek()
方法可以让指针到达指定位置,
file.seek(offset, whence)
whence
为0(默认)表示文件开头,1 表示当前位置,2 表示末尾。offset
表示相对偏移量。
写入内容
如需写入文件,创建文件对象时要传入参数 w
,表示从头开始写文件,这将覆盖文件中原有内容。如果传入 a
,则表示在已有的文本后面添加文本,可理解为向列表末尾添加新内容。在这两种情况下,如果文件名不存在,则会创建新的空文件。
open('test.txt', 'w')
file.write('Hello world\n')
open('test.txt', 'a')
file.write('Hello' + str(2))
write()
方法需要自行添加换行符\n
。
写入整数时要显示地将其转为字符串。
关闭文件
close
方法用于关闭文件。
file.close()
如果不使用这条语句关闭文件,可能会导致有些内容没有写入到文件中。
在打开文件时可能会出现异常,可用 try-except
语句处理,详细可戳此链接。使用上下文管理器 with
语句更加简便读取文件
更详细的文件读写可参考文档。
结构数据
如果需要读取字典这样的结构数据,可以采用JSON格式,这需要借助json
模块。
import json
dumps()
方法可以查看JSON字符串表示方法的结果。
x = [1, 'simple', 'list']
json.dumps(x) # '[1, "simple", "list"]'
一个类似的方法是dump()
,它可以写入文件。
json.dump(x, f)
如果需要从文件中读取则使用load()
方法。
x = json.load(f)
更多内容可以查看文档。
变量读写
利用shelve
模块可以将变量保存到二进制shelf文件中,也可以从硬盘中恢复变量。如
import shelve
shelf = shelve.open('data')
l = ['A', 'B', 'C']
shelf['l'] = l
shelf.close()
上面这段代码完成了变量保存。如果要读取数据
shelf = shelve.open('data')
shelf['l']
shelf.close()
这里打开文件不必指定读或写,因为打开之后既能读又能写。
从上面代码可以看出,shelf
文件类似于字典,因此它可以使用keys()
和values()
方法,如
list(shelf.keys())
list(shelf.values())
这两个方法可戳此链接查看。
更详细的内容可以查看文档。
更多推荐
python文件和变量读写
发布评论