r | 只读,默认 |
w | 只写,打开前清空文件内容 |
a | 追加 |
a+ | 读写,写到文件末尾 |
w+ | 可读写,清空文件内容 |
r+ | 可读写,能写到文件任何位置 |
rb | 二进制模式读 |
wb | 二进制模式写,清空文件内容 |
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.
f.__class__( f.__new__( f.encoding f.readinto(
f.__delattr__( f.__reduce__( f.errors f.readline(
f.__doc__ f.__reduce_ex__( f.fileno( f.readlines(
f.__enter__( f.__repr__( f.flush( f.seek(
f.__exit__( f.__setattr__( f.isatty( f.softspace
f.__format__( f.__sizeof__( f.mode f.tell(
f.__getattribute__( f.__str__( f.name f.truncate(
f.__hash__( f.__subclasshook__( f.newlines f.write(
f.__init__( f.close( f.
next
( f.writelines(
f.__iter__( f.closed f.read( f.xreadlines(
|
扫描二维码关注公众号,回复:
3855099 查看本文章
f.read([size]) | 读取size字节,当未指定或给负值时,读取剩余所有的字节,作为字符串返回 |
f.readline([size]) | 从文件中读取下一行,作为字符串返回。如果指定size则返回size字节 |
f.readlines([size]) | 读取size字节,当未指定或给负值时,读取剩余所有的字节,作为列表返回 |
f.write(str) | 写字符串到文件 |
f.writelines(seq) | 写序列到文件,seq必须是一个可迭代对象,而且要是一个字符串序列 |
f.seek(offset[, whence=0]) | 在文件中移动文件指针,从whence(0代表文件起始位置,默认。1代表当前位置。2代表文件末尾)偏移offset个字节 |
f.tell() | 返回当前在文件中的位置 |
f.close() |
关闭文件 |
f.flush | 刷新缓冲区到磁盘 |
1
2
3
4
5
|
# cat test.txt
1.Python
2.Java
3.C
+
+
4.Ruby
|
1
2
3
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.read()
'1.Python\n2.Java\n3.C++\n4.Ruby\n'
|
1
2
3
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.read(
9
)
# 获取指定字节
'1.Python\n'
|
1
2
3
4
5
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.readline()
'1.Python\n'
>>> f.readline()
'2.Java\n'
|
1
2
3
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.readlines()
[
'1.Python\n'
,
'2.Java\n'
,
'3.C++\n'
,
'4.Ruby\n'
]
|
1
2
3
4
5
6
7
8
9
|
>>> f
=
open
(
'test.txt'
,
'a'
)
# 以追加方式打开文件
>>> f.write(
"5.Shell\n"
)
# 这一步并没有真正写到文件
>>> f.flush()
# 刷新到磁盘才写到文件
# cat test.txt
1.Python
2.Java
3.C
+
+
4.Ruby
5.Shell
|
1
2
3
4
5
6
7
8
9
10
|
>>> f
=
open
(
'test.txt'
,
'a'
)
>>> f.writelines([
'a'
,
'b'
,
'c'
])
>>> f.flush()
# cat test.txt
1.Python
2.Java
3.C
+
+
4.Ruby
5.Shell
abc
|
1
2
3
4
5
6
7
8
9
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.tell()
0
>>> f.seek(
9
)
>>> f.tell()
9
>>> f.seek(
5
,
1
)
# 1表示从当前位置开始
>>> f.tell()
14
|
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> f
=
open
(
'test.txt'
,
'r'
)
>>> f.tell()
0
>>> f.readline()
'1.Python\n'
>>> f.tell()
9
>>> f.readline()
'2.Java\n'
>>> f.tell()
16
>>> f.close()
# 使用完后关闭文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data
=
f.read()
data
=
"test\n"
+
data
f
=
open
(
'test.txt'
,
'w'
)
f.write(data)
f.flush()
f.close()
# python test.py
# cat test.txt
test
1.Python
2.Java
3.C
+
+
4.Ruby
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data_list
=
f.readlines()
# 经测试,此方法比下面迭代效率高
# data_list = []
# for line in f:
# data_list.append(line)
data_list.insert(
1
,
'test\n'
)
# data = ''.join(data)
f
=
open
(
'test.txt'
,
'w'
)
# f.write(data)
f.writelines(data_list)
f.flush()
f.close
# python test.py
# cat test.txt
1.Python
test
2.Java
3.C
+
+
4.Ruby
|
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data_list
=
f.readlines()
data_list.insert(
2
-
1
,
'test\n'
)
# 在指定行减去一行就是上一行了,下一行插入同理
f
=
open
(
'test.txt'
,
'w'
)
f.writelines(data_list)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data_list
=
f.readlines()
data_list.pop(
2
)
f
=
open
(
'test.txt'
,
'w'
)
f.writelines(data_list)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data_list
=
f.readlines()[
0
:
2
]
# 列表切片
f
=
open
(
'test.txt'
,
'w'
)
f.write(data_list)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data
=
f.readlines()
# data_list = []
# for line in data:
# if line.find('Py') == -1: # 如果当前行不包含Py字符,会返回-1,否则返回下标
# data_list.append(line)
data_list
=
[line
for
line
in
data
if
line.find(
'Py'
)
=
=
-
1
]
f
=
open
(
'test.txt'
,
'w'
)
f.writelines(data_list)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data
=
f.read()
data.replace(
'old string'
,
'new string'
)
f
=
open
(
'test.txt'
,
'w'
)
f.write(data)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
,
'r'
)
data
=
f.readlines()
data_list
=
[]
for
line
in
data:
if
data.index(line)
=
=
2
:
data_list.append(line.replace(
'++'
,
'#'
))
else
:
data_list.append(line)
f
=
open
(
'test.txt'
,
'w'
)
f.writelines(data_list)
f.flush()
f.close
|
1
2
3
4
5
6
7
8
|
>>> f
=
open
(
'test.txt'
)
>>>
for
line
in
f:
...
print
line
# 每行后面会有一个换行符\n,所以会打印出来换行符,可以使用line.strip('\n')去除
...
1.Python
2.Java
3.C
+
+
4.Ruby
|
1
2
3
4
5
6
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
)
while
True
:
data
=
f.read(
1024
)
# 每次只读取1024字节
if
not
data:
break
|
1
2
3
4
5
6
7
8
9
10
11
|
方法
1
:
import
urllib
url
=
"http://nginx.org/download/nginx-1.10.1.tar.gz"
urllib.urlretrieve(url,
"nginx-1.10.1.tar.gz"
)
方法
2
:
import
urllib2
url
=
"http://nginx.org/download/nginx-1.10.1.tar.gz"
f
=
urllib2.urlopen(url).read()
with
open
(
"nginx-1.10.1.tar.gz"
,
"wb"
) as data:
data.write(f)
|
fileinput.input([files[, inplace[, backup[, mode[, openhook]]]]]) | |
fileinput.isfirstline() | 检查当前行是否是文件的第一行 |
fileinput.lineno() | 返回当前已经读取行的数量 |
fileinput.fileno() | 返回当前文件数量 |
fileinput.filelineno() | 返回当前读取行的行号 |
fileinput.filename() | 返回当前文件名 |
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import
fileinput
for
line
in
fileinput.
input
(
'test.txt'
):
print
line
# python test.py
1.Python
2.Java
3.C
+
+
4.Ruby
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import
fileinput
for
line
in
fileinput.
input
(
'test.txt'
):
print
fileinput.filelineno()
print
line,
# 逗号忽略换行符
# python test.py
1
1.Python
2
2.Java
3
3.C
+
+
4
4.Ruby
|
1
2
3
4
5
6
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import
fileinput
for
line
in
fileinput.
input
(
'test.txt'
, backup
=
'.bak'
, inplace
=
1
):
line
=
line.replace(
'++'
,
'#'
)
print
line,
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import
fileinput
for
line
in
fileinput.
input
([
'test.txt'
,
'test2.txt'
]):
print
line,
12.4
.
5
实时读取文件新增内容,类似tail
-
f
#!/usr/bin/python
# -*- coding: utf-8 -*-
with
open
(
'access.log'
) as f:
f.seek(
0
,
2
)
# 每次打开文件都将文件指针移动到末尾
while
True
:
line
=
f.readline()
if
line:
print
line,
|
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
import
time
with
open
(
'access.log'
) as f:
f.seek(
0
,
2
)
while
True
:
line
=
f.readline()
if
line:
print
line,
else
:
time.sleep(
1
)
|
shutil.copyfile(src, dst) | 复制文件 |
shutil.copytree(src, dst) | 复制文件或目录 |
shutil.move(src, dst) | 移动文件或目录 |
shutil.rmtree(path,ignore_errors=False, onerror=None) | 递归删除目录。os.rmdir()不能删除有文件的目录,就可以用这个了 |
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None) |
1
2
3
4
5
6
7
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
f
=
open
(
'test.txt'
)
try
:
data
=
f.read()
finally
:
f.close()
|
1
2
3
4
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
with
open
(
'test.txt'
) as f:
data
=
f.read()
|