Python 学习笔记(07)文件

Python 学习笔记(07)文件

7.1 文件对象

在python中,文件只是【连续的字节序列】。文件对象用来访问普通磁盘文件或类文件(如打开URL读取的Web界面)。

7.1.1 相关内建函数(BIF)

file = open("filepath", "access_mode")

"""
open()函数提供了初始化输入/输出操作的【通用接口】,结果将返回一个文件对象或引发一个错误。

参数access_mode为拓展打开方式:
f = open("f.txt", "r")     		# 以只读方式打开文件,文件的指针将会放在文件的开头
f = open("f.txt", "rb")    		# 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头
f = open("f.txt", "r+")  		# 打开一个文件用于读写,文件指针将会放在文件的开头
f = open("f.txt", "w") 			# 打开一个文件只用于写入,如果该文件已存在则打开文件,原有内容会被删除;如果该文件不存在 创建新文件
f = open("f.txt", "w+") 		# 打开一个文件用于读写,如果该文件已存在则打开文件,原有内容会被删除;如果该文件不存在 创建新文件
f = open("f.txt", "a")  		# 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾;如果该文件不存在 创建新文件进行写入
f = open("f.txt", "a+") 		# 打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾;如果该文件不存在 创建新文件用于读写
"""

7.1.2 文件函数

# 读取文件相关
file.read(size)					# 每次读取size字节大小的内容
file.readline()					# 每次读取一行内容
file.readlines()				# 读取全部内容,结果为列表,列表中的元素为每行内容
file.xreadlines()				# 读取全部内容,结果为生成器

# 写入文件相关
file.write()					# 写入一个字符串
file.writelines()				# 写入一个字符串或列表,注意该函数并不会主动分行,需要在每个字符串结尾添加换行符

# 文件定位相关
file.seek(offset,whence)		# offset:偏移量,即偏移(略过)多少个字符开始读取,默认为0;
								# whence:0->从头开始读取,1->当前位置继续读取,2->末尾开始读取
file.tell()						# 返回文件指针当前位置

# 其余操作
file.closed()					# 关闭文件,如果在打开后没有【显式】关闭文件可能会丢失【缓冲区数据】
file.flush()					# 将【缓冲区数据】立刻写入文件
file.truncate(size)				#  用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符,截断之后 size 后面的所有字符被删除。

"""
文件读写时可能产生IOError,一旦出错就不会调用file.close()

为确保正确关闭文件,建议使用with语句,with 的作用就是自动调用close()方法:

with open("filepath", "access_mode") as file:
	print(file.read())
"""

7.2 文件迭代

文件自身作为【迭代器】,即可迭代对象。

# 直接使用for循环迭代
try: 
    for line in file:
         print(line)			# line带"\n"
finally:
     file.close()
 
# 使用file.next()
for index in range(5):
    line = file.next()

7.3 标准文件对象

包括【sys.stdin】、【sys.stdout】以及【sys.stderr】

7.3.1 标准输入 sys.stdin

输入来自键盘,对应 input()input()从【sys.stdin】中接受输入。

sys.stdin.readline() 只输入(获取)一行,sys.stdin.readlines() 会将标准输入全部获取,包括末尾的’\n’,所以一般会在末尾加上 .strip().strip(“\n”) 去掉末尾的换行符

import sys

line = sys.stdin.readline().strip()     #末尾加.strip() ,去掉了换行符

for i in range(len(line)):          	#len(line)=3
	print(line[i] + "hello")

7.3.2 标准输出 sys.stdout

输出到显示器,对应的操作是 print() ;需要定义一个write对象,告诉sys.stdout去哪儿写。print()输出到【sys.stdout】。

sys.stdout.write () 从键盘读取 sys.stdout.write ()输入的内容

import sys

sys.stdout.write("johnson")

for i in range(3):
	sys.stdout.write("johnson")
    
Out:
johnson
johnson
johnson

7.3.3 标准错误 sys.stderr

标准错误输出(sys.stderr),输出到显示器。

import sys

sys.stderr.write("error\n")

7.4 分隔符

不同的操作系统具有不同的行分隔符以及路径分隔符

7.4.1 行分隔符

1) POSIX (Unix/ MacOS): 【\n】

2) DOS/ Windows: 【 \r \n】

3) 旧版MacOS : 【 \r】

7.4.2 路径分隔符

1) POSIX (Unix/ MacOS): 【/】

2) DOS/ Windows: 【\】

3) 旧版MacOS : 【 :】

7.4.3 import os

为方便进行跨平台开发,python的os库中包含了一部分属性用于确定分隔符以免产生歧义。

import os

os.linesep					# 行分隔符
os.sep						# 路径名分隔符
os.pathsep					# 路径分隔符
os.curdir					# 当前工作目录
os.pardir					# 父目录

部分属性用于确定分隔符以免产生歧义。

import os

os.linesep					# 行分隔符
os.sep						# 路径名分隔符
os.pathsep					# 路径分隔符
os.curdir					# 当前工作目录
os.pardir					# 父目录

7.5 文件路径

文件含有两部分重要属性:【文件名】以及【路径】。文件名为每个文件指定的名称,而路径代表文件在计算机上的存储位置。

7.5.1 自动添加路径分隔符

该函数可以用来连接文件名以及路径,并会根据不同的操作系统自动添加对应的路径分隔符。

import os

print(os.path.join('C:\\User\\User', filename))

7.5.2 相关函数

绝对路径:从根文件夹开始,Windows中以盘符名开头,POSIX中以【/】为根文件夹;

相对路径:文件相对于当前工作目录的位置,格式为【.\filename】

import os

os.getcwd()						# 获得当前工作路径

os.chdir(newPath)				# 切换至目标工作路径

os.path.abspath(path)			# 相对路径转换为绝对路径,常用 os.path.abspath(__file__)

os.path.relpath(path, start)	# 返回从 start 路径到 path 的相对路径,可以用于截取某一段路径

os.path.dirname(path)			# 返回【路径】部分

os.path.basename(path)			# 返回【文件名】部分

os.path.split(path)				# 元组形式存储【路径】及【文件名】

os.path.exists(path)			# 检查路径是否存在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值