1. 文件与文件系统

1.1 打开文件

  • open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) Open file and return a stream. Raise OSError upon failure.

    • file: 必需,文件路径(相对或者绝对路径)。
    • mode: 可选,文件打开模式
    • buffering: 设置缓冲
    • encoding: 一般使用utf8
    • errors: 报错级别
    • newline: 区分换行符

常见的mode如下表所示:

打开模式 执行操作
‘r’ 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
‘w’ 打开一个文件只用于写入。
如果该文件已存在则打开文件,并从开头开始编辑。
即原有内容会被删除。
如果该文件不存在,创建新文件。
‘x’ 写模式,新建一个文件,如果该文件已存在则会报错。
‘a’ 追加模式,打开一个文件用于追加。
如果该文件已存在,文件指针将会放在文件的结尾。
也就是说,新的内容将会被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。
‘b’ 以二进制模式打开文件。一般用于非文本文件,如:图片。
‘t’ 以文本模式打开(默认)。一般用于文本文件,如:txt。
‘+’ 可读写模式(可添加到其它模式中使用)

【例】打开一个文件,并返回文件对象,如果该文件无法被打开,会抛出OSError

f = open('将进酒.txt',encoding='utf-8') #建议用'utf-8'编码,否则易出现'gbk'错误。
print(f)
#<_io.TextIOWrapper name='将进酒.txt' mode='r' encoding='utf-8'>
for each in f:print(each)

1.2 文件对象方法

  • fileObject.close() 用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作,否则会触发ValueError错误。

【例】

f = open("将进酒.txt",encoding='utf-8')
print('FileName:', f.name)  # FileName: 将进酒.txt
f.close()'''
for each in f:print(each)
#ValueError: I/O operation on closed file.
'''
  • fileObject.read([size]) 用于从文件读取指定的字符数,如果未给定或为负则读取所有。

【例】

f = open('将进酒.txt', 'r',encoding='utf-8')
line = f.read(30)    #包括换行符
print("读取的字符串: %s" % line)
#读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
#君不见,高堂明镜悲
f.close()
  • fileObject.readline()读取整行,包括 “\n” 字符。
    【例】
f = open('将进酒.txt', 'r',encoding='utf-8')
line = f.readline()
print("读取的字符串: %s" % line)
# 读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
f.close()
  • fileObject.readlines()用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的for... in ... 结构进行处理。

【例】

f = open('将进酒.txt', 'r',encoding='utf-8')
lines = f.readlines()
print(lines)
#['君不见,黄河之水天上来,奔流到海不复回。\n', '君不见,高堂明镜悲白发,朝如青丝暮成雪。\n', '人生得意须尽欢,莫使金樽空对月。\n', '天生我材必有用,千金散尽还复来。\n', '烹羊宰牛且为乐,会须一饮三百杯。\n', '岑夫子,丹丘生,将进酒,杯莫停。\n', '与君歌一曲,请君为我倾耳听。\n', '钟鼓馔玉不足贵,但愿长醉不复醒。\n', '古来圣贤皆寂寞,惟有饮者留其名。\n', '陈王昔时宴平乐,斗酒十千恣欢谑。\n', '主人何为言少钱,径须沽取对君酌。\n', '五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。']
for each in lines:each.strip()print(each)
# 君不见,黄河之水天上来,奔流到海不复回。
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
# 人生得意须尽欢,莫使金樽空对月。
# 天生我材必有用,千金散尽还复来。
# 烹羊宰牛且为乐,会须一饮三百杯。
# 岑夫子,丹丘生,将进酒,杯莫停。
# 与君歌一曲,请君为我倾耳听。
# 钟鼓馔玉不足贵,但愿长醉不复醒。
# 古来圣贤皆寂寞,惟有饮者留其名。
# 陈王昔时宴平乐,斗酒十千恣欢谑。
# 主人何为言少钱,径须沽取对君酌。
# 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。f.close()
  • fileObject.tell()返回文件的当前位置,即文件指针当前位置。

【例】

f = open('将进酒.txt', 'r',encoding='utf-8')
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
pos = f.tell()
print(pos)  # 62
f.close()
  • fileObject.seek(offset[, whence])用于移动文件读取指针到指定位置。
    - offset:开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
    - whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。

【例】

f = open('将进酒.txt', 'r',encoding='utf-8')
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
line = f.readline()
print(line)
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
f.seek(0, 0)
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
f.seek(0, 1)
line = f.readline()
print(line)
#君不见,高堂明镜悲白发,朝如青丝暮成雪。
f.close()
  • fileObject.write(str)用于向文件中写入指定字符串,返回的是写入的字符长度。

【例】

f = open('workfile.txt', 'wb+')   #没有workfile将创建新的
print(f.write(b'0123456789abcdef'))  # 16
print(f.seek(5))  # 5
print(f.read(1))  # b'5'
print(f.seek(-3, 2))  # 13
print(f.read(1))  # b'd'

在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。

如果文件打开模式带b,那写入文件内容时,str(参数)要用encode方法转为bytes形式,否则报错:TypeError: a bytes-like object is required, not 'str'

【例】

str = '...'
# 文本 = Unicode字符序列
# 相当于 string 类型str = b'...'
# 文本 = 八位序列(0到255之间的整数)
# 字节文字总是以‘b’或‘B’作为前缀;它们产生一个字节类型的实例,而不是str类型。
# 相当于 byte[]- `fileObject.writelines(sequence)`向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符`\n`。【例】```python
f = open('test.txt', 'w+')
seq = ['小马的程序人生\n', '老马的程序人生']
f.writelines(seq)
f.seek(0, 0)
for each in f:print(each)# 小马的程序人生
# 老马的程序人生
f.close()

2. OS 模块中关于文件/目录常用的函数

我们所知道常用的操作系统就有:Windows,Mac OS,Linu,Unix等,这些操作系统底层对于文件系统的访问工作原理是不一样的,因此你可能就要针对不同的系统来考虑使用哪些文件系统模块……,这样的做法是非常不友好且麻烦的,因为这样就意味着当你的程序运行环境一改变,你就要相应的去修改大量的代码来应对。

有了OS(Operation System)模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。

  • os.getcwd()用于返回当前工作目录。
  • os.chdir(path)用于改变当前工作目录到指定的路径。

【例】

import ospath = 'C:\\'
print("当前工作目录 : %s" % os.getcwd())
# 当前工作目录 : D:\**\datawhale\python
os.chdir(path)
print("目录修改成功 : %s" % os.getcwd())
# 目录修改成功 : C:\
  • listdir (path='.')返回path指定的文件夹包含的文件或文件夹的名字的列表。
    【例】
import osdirs = os.listdir()
for item in dirs:print(item)
'''07. 元组.md
8. 字符串.md
9. 字典.md
10. 集合.md
11. 序列.md
12. 函数与Lambda表达式.md
13. 类与对象.md
14. 魔法方法.md
15. 模块.md
16. datetime模块.md
17. 文件与文件系统.md'''

python之文件与文件系统相关推荐

  1. python 中文件输入输出及os模块对文件系统的操作

    整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...

  2. Python学习 Task9:文件与文件系统

    Task9:文件与文件系统 文件与文件系统 1.1 打开文件 1.2 文件对象方法 1.3 简洁的 with 语句 文件与文件系统 1.1 打开文件 open(file, mode='r', buff ...

  3. Python基础语法笔记(十六)文件与文件系统

    Reference https://github.com/datawhalechina/team-learning-program/blob/master/PythonLanguage 1. 文件与文 ...

  4. [Python学习日记] 文件与文件系统(一)

    [Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...

  5. python打开一个不存在的文件时-python判断文件是否存在,不存在就创建一个的实例...

    python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...

  6. python对文件的读操作方法有哪些-python--文件的读写操作

    Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...

  7. 3 Python os 文件和目录

    ile 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行读写操作. 2 file.flush() ...

  8. datawhale组队学习task9—文件与文件系统

    1. 文件与文件系统 打开文件 open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, close ...

  9. python读写文件的语句_用Python读写文件指南

    用Python读写文件(指南) [TOC] 使用Python最常见的任务之一是读取和写入文件.无论是写入简单的文本文件,读取复杂的服务器日志,甚至是分析原始字节数据,所有这些情况都需要读取或写入文件. ...

最新文章

  1. JVM调优总结(一)- 一些概念
  2. Go 语言编程 — Overview
  3. java 判断crontab_crontab详解
  4. kibana安装与Kibana server is not ready yet
  5. java redis 重连机制_redis在java中的客户端连接
  6. [转]最常用的15大Eclipse开发快捷键技巧
  7. ES9新特性_ES9扩展运算符与rest参数---JavaScript_ECMAScript_ES6-ES11新特性工作笔记053
  8. java与javac版本不一致问题
  9. Docker系列(十)Dockerfile指令
  10. 公共关系学试题与参考答案
  11. 我的科幻评论——《星船伞兵》:海因莱茵最经典又最不典型之作,平凡人类勇气与责任的赞歌
  12. ibm 服务器 阵列 加硬盘,IBM服务器增加硬盘
  13. MT6589下载工具,MT6589刷机工具
  14. mysql优化之in内子查询
  15. 敏涵化妆品何以圈粉Z世代消费群体?
  16. TCP/IP网络简介(来自与51CTO学院视频授课内容)
  17. python自动发邮件报554错误_python smtplib使用163发送邮件 报错 554 DT:SPM
  18. 【SpringBoot】SSM“加速器”SpringBoot初体验
  19. 中国最伟大的杀人犯(海龙哥)
  20. excel怎么截取字符串

热门文章

  1. camille下的frida与mumu模拟器连接,进行隐私合规检测
  2. 轻松解决IDEA2020“Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:xx“
  3. C++性能优化系列——3D高斯核卷积计算(三)IPP计算一维卷积
  4. windows系统的安装时间怎么查看
  5. 多道批程序创建密匙文件夹
  6. 如何在ZBrush 4R7中设置背面遮罩
  7. 查看工作组计算机 无法访问 没有权限使用网络资源
  8. VMware虚拟机多开克隆教程(末尾附带视频教程)
  9. Linux内核:驱动程序
  10. 玩转Win7/Vista/XP的计划任务命令:schtask