Python学习_07 文件操作和函数
2018-04-12
1、open函数
语法如下:
file object = open(file_name [, access_mode][, buffering])
不同模式打开文件的完全列表:
模式
|
描述
|
r
|
以只读方式打开文件,指针放在文件开头,这是默认默认
|
rb
|
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
|
r+
|
打开一个文件用于读写。文件指针将会放在文件的开头。
|
rb+
|
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
|
w
|
打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
wb
|
以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
|
w+
|
打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
|
wb+
|
以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
|
a
|
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
ab
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
|
a+
|
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
|
ab+
|
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
|
写文件要制定字符集编码,可以声明一个全局变量来制定文件字符集编码,联系写一个文件并读取:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/13 10:04
# @Auther: xiexiaolong
# @File: 0413.PY
##声明全字符集编码
ECODING =
"utf-8"
#创建文件并写入内容
f =
open
(
"0413.txt"
,
"w"
,
encoding
=ECODING)
f.write(
"Hello World!
\n
你好!
\n
I'm 谢小龙"
)
f.close()
#打开刚创建的文件并读取内容
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
print
(f.read())
f.close()
结果如下:
D:\python\venv\Scripts\python.exe D:/python/venv/0413.py
Hello World!
你好!
I'm 谢小龙
Process finished with exit code 0
2、文件对象常用的操作方法
函数
|
描述
|
open
|
打开文件,无返回值
|
read
|
把文件的所有内容都读取出来,返回字符串
|
write(data)
|
把字符串data写入到文件中,只接受字符串参数
|
readline()
|
每次读取文件的一行,返回一个每行的字符串数据
|
readlines()
|
读取文件所有内容,返回一个list,每一行是一个元素
|
name
|
输出文件名
|
fileno
|
文件描述符
|
close
|
关闭文件
|
closed
|
返回boll值,判断文件是否已经关闭
|
encoding
|
文件编码
|
f.seek(offset,whence)
|
光标转移,offset 偏移量,正数向后偏移,负数向前偏移,whence从什么时候开始偏移
|
tell
|
返回文件光标位置
|
f.truncate(20)
|
保留20位,其他清空,只有写文件才可以用
|
练习脚本:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2018/4/13 10:04
# @Auther: xiexiaolong
# @File: 0413.PY
##声明全字符集编码
ECODING =
"utf-8"
#创建文件并写入内容
f =
open
(
"0413.txt"
,
"w"
,
encoding
=ECODING)
f.write(
"Hello World!
\n
你好!
\n
I'm 谢小龙"
)
f.close()
#打开刚创建的文件并读取内容
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
#read:
print
(
"read test:
\n
{0}"
.format(f.read()))
f.close()
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
#readline和tell:
print
(
"readline1 test:
\n
{0}"
.format(f.readline()))
print
(
"tell test:{0}"
.format(f.tell()))
print
(
"readline2 test:
\n
{0}"
.format(f.readline()))
f.close()
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
#readlines:
print
(
"readlines test:
\n
{0}"
.format(f.readlines()))
f.close()
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
#name:
print
(
"name test:
\n
{0}"
.format(f.name))
f.close()
#closed:
print
(
"closed test:
\n
{0}"
.format(f.closed))
f =
open
(
"0413.txt"
,
"r"
,
encoding
=ECODING)
输出结果:
D:\python\venv\Scripts\python.exe D:/python/venv/0413.py
read test:
Hello World!
你好!
I'm 谢小龙
readline1 test:
Hello World!
tell test:14
readline2 test:
你好!
readlines test:
['Hello World!\n', '你好!\n', "I'm 谢小龙"]
name test:
0413.txt
closed test:
True
Process finished with exit code 0
3、函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数就是一种封装思想,把细小的功能或者可以缩小的功能封装成一种函数
函数定义以关键字def开头,函数名,参数:回车缩进
def function (arg1, arg2, ...):
pass
函数的调用:函数名直接传入参数
function(1,2,3)
上面arg1,arg2 是形参1,2,3是 实参
args和kwargs参数:
args可以当作可容纳多个变量的lisi
kwargs dict
def fun(*args, **kwargs)
pass
fun(1, 2, 3, 4, 5, a=1, b=2)
例子中:
a =1
args = 2,3,4,5 list一一对应
kwargs = {"a":1, "b":2} dict一一对应