### 读文件

- 读取全部内容

```python
f = open("xxx.py")
f.read()
```

- 读取指定多少个字符内容

```python
f = open("xxx.py")
f.read(2)
```

- 按行读取：如果返回空就代表文件读完了

```python
>>> f = open("xxx.py")
>>> f.readline()
'This is the first line of the file.\n'
>>> f.readline()
'Second line of the file\n'
>>> f.readline()
''
```

- 读取所有行到list

```python
>>> f = open("module_support.py")
>>> f.readlines()
['#!/usr/bin/python3\n', '\n', 'def add(a, b):\n', '    return a + b\n', '\n', 'if __name__ == "__main__":\n', '    print("__main__")\n', 'else:\n', '    print(__name__)\n']
>>> 
```

- for循环读取每一行

```python
>>> f = open("module_support.py")
>>> for line in f:
...     print(line, end = "")
... 
#!/usr/bin/python3

def add(a, b):
    return a + b

if __name__ == "__main__":
    print("__main__")
else:
    print(__name__)
>>> 
```



### 写文件

```python
f = open("module_support.py", "a") # 追加
f = open("module_support.py", "w") # 文件不存在创建，存在就清空
f.wtite("one line string")
f.close()
```

### 文件操作cursor

- f.tell() 显示当前cursor位置
- f.seek(offset, from_what) 重新设置cursor位置
  -  from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾，例如：
    -  seek(x, 0) ： 从起始位置即文件首行首字符开始移动 x 个字符
    -  seek(x, 1) ： 表示从当前位置往后移动x个字符
    -  seek(-x, 2)：表示从文件的结尾往前移动x个字符 

```python
>>> f = open("module_support.py", "a")
>>> f.tell()
128
>>> f = open("module_support.py", "a")
>>> f.seek(10, 0)
10
>>> 
```

