open函数
在 Python 中,open()函数用于打开文件,并返回一个文件对象,通过这个文件对象可以对文件进行各种操作。
1 2
| f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) f.close()
|
- file:要打开的文件路径,可以是相对路径或绝对路径。
- mode(可选):打开文件的模式,默认为’r’(只读模式)。常见的模式有:
- ‘r’:只读模式,文件必须存在。
- ‘w’:写入模式,如果文件存在则清空内容,如果文件不存在则创建新文件。
- ‘a’:追加模式,在文件末尾追加内容,如果文件不存在则创建新文件。
- ‘b’:二进制模式,可以与其他模式结合使用,如’rb’(二进制只读模式)、’wb’(二进制写入模式)。。
- ‘t’:文本模式(默认),可以与其他模式结合使用,如’rt’(文本只读模式)、’wt’(文本写入模式)。
- buffering(可选):设置缓冲策略。默认为 - 1,表示使用系统默认的缓冲策略。
- encoding(可选):指定文件的编码方式,仅在文本模式下使用。例如’utf-8’。
- errors(可选):指定编码错误处理方式,仅在文本模式下使用。
- newline(可选):控制换行符的处理方式,仅在文本模式下使用。
- closefd(可选):如果为True(默认值),则文件描述符会在文件关闭时关闭;如果为False,则文件描述符在文件关闭时不会关闭,这在文件描述符来自于其他地方时很有用。
- opener(可选):一个自定义的打开文件的函数。
文件对象的常用属性与方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| >>> f = open("body.json", "r+") >>> f.read() '{\n "type": "markdown",\n "text": "Hello <@W7RR1LJ58>"\n}\n' >>> f.fileno() 3 >>> f.isatty()
>>> f.isatty() False >>> f.readline() '' >>> f.readline() '' >>> f.seek(0, 0) 0 >>> f.readline() '{\n' >>> f.readline() ' "type": "markdown",\n' >>> f.readlines() [' "text": "Hello <@W7RR1LJ58>"\n', '}\n'] >>> f.tell() 57 >>> f.seek(3, 0) 3 >>> f.read() ' "type": "markdown",\n "text": "Hello <@W7RR1LJ58>"\n}\n' >>> f.tell() 57 >>> f.seek(0, 0) 0 >>> f.write("abcdefg") 7 >>> f.tell() 7 >>> f.seek(0,0) 0 >>> f.read(3) 'abc' >>> f.tell() 3 >>> f.truncate() 57 >>> f.seek(0,0) 0 >>> f.read() 'abcdefgpe": "markdown",\n "text": "Hello <@W7RR1LJ58>"\n}\n' >>> f.closed False >>> f.encoding 'UTF-8' >>> f.name 'body.json' >>> f.mode 'r+' >>> f.newlines '\n'
|
os
模块常用的文件系统操作函数
1 2 3 4 5 6 7 8 9 10 11 12
| >>> f = open('test', 'w') >>> f.write('foo\n') 4 >>> f.write('bar\n') 4 >>> f.close() >>> cwd=os.getcwd() >>> os.listdir(cwd) ['.envrc', 'test', '.whitesource', '.gitignore', 'ai', 'vpc-bss-onboarding', 'fabric_test', '.git', '.travis.yml'] >>> os.rename('test', 'a.txt') >>> os.path.join(cwd, f.name) '/Users/senwang/tmp/test'
|