python笔记006-文件操作
1文件操作... 1
1.1打开和关闭文件... 1
1.1.2 open函数... 1
1.2 文件 File对象的属性... 1
1.2.1 属性... 1
1.2.2 方法... 2
1.2.3 mode=’xx’属性详情... 4
1.3 OS操作文件... 6
1文件操作
1.1打开和关闭文件
1.1.2 open函数
file = open(file_name [,mode][,buffering]
eg:file = open(“test.txt”,mode = ‘r’,encoding = ‘utf-8’)
参数详情:
file_name : 文件名
mode:这个参数非强制选择,默认 只读(r),详情请见:
https://www.runoob.com/python/python-files-io.html
encoding :文件的编码方式
打开文件的方式
注意点:f.close() 最后一定要写,关闭文件,关闭后不可以在读
1.2 文件 File对象的属性
1.2.1 属性
file = open(‘a.txt’, mode = ‘r’ , encoding = ‘utf-8’)
file.close 文件关闭返回 true ,否则返回 false
file.name 返回文件名称
flie.mode 返回被打开文件的访问模式
1.2.2 方法
注意点:写完一定要刷新,并且一定要关闭
① write() 方法:
write() 方法可以将任何字符串写入一个打开的文件。注意点:Python字符中可以是二进制数据,而不仅仅是文字。
write() 方法不会在字符串的结尾自动添加换行符(‘\n’)
def test3():
f = open("day008/day_008_txt1",mode='w',encoding="utf-8")
f.write('孟子三迁,孟轲(孟子)的母亲为了选择良好的\n教育环境,多次迁居')
#文件中 "\n" 的作用是换行,write()方法不会自动换行
f.flush() #刷新缓冲区
#result = f.read() #这句错误,不能读,因为 mode='w',只读模式
f.close() #关闭文件
test3()
② read() 方法:从一个打开的文件中读取一个字符串
def test1(): # 读操作
f = open('day008/day_008_txt' , mode = 'r',encoding='utf-8')
result = f.read()
print(result)
f.close() # 一定要记得写close,并且写到最后面
test1()
read(n) 读取 n 个字符,如果文件没有关闭,在读取,不会读,而是在上次光标所在处开始读。其实,看见带‘b’的,都是处理的非文本。(包含下面)
注意:在文本模式下,用“r”和“w”模式,不用编码和解码。但是在非文本文件下,比如视频、音乐等、用‘wb’和‘rb’,因为
用‘w’和‘r’是操作不了的。其实,
③ close() 方法:
File对象的 close() 方法刷新缓冲区里任何还没写入的信息,并且关闭文件,关闭后就不能再进行写入。
④ seek() 方法:用于移动文件读取指针到指定位置,也就是光标
语法:file.seek(offset[,whence])
offset :开始的偏移量
whence :可选,默认值为0 。 表示要从哪个位置开始偏移;0代表开头,1代表当前位置,2代表文件末尾
⑤ tell() :获取光标当前位置
file.tell() 方法返回文件当前位置,即文件指针当前位置。
day008/day_008_1.txt文件内容
秦时明月汉时关,
万里长征人未还。
但使龙城飞将在,
不教胡马度阴山。
def test13():
f = open('day008/day_008_1.txt',mode='r',encoding='utf-8')
print(f.name)#文件名
line = f.readline()#读取文件中的一行数据
print('读取的数据为:%s'%(line)) #获取当前文件位置
path = f.tell()
print('当前位置:%d'%path)
f.close()#关闭文件
test13()
结果:
⑥ truncate() :截断文件
file.truncate( [size]) 方法用于截断文件,如果有可选参数size,则表示截断文件为size个字符。如果没有指定size,则从当前位置起截断;截断之后size后面的所有字符被删除。
注意点:deeping-bug:在r+ 模式下,如果读取了内容,不论读取内容的多少,光标显示的多少。再写入文件或操作文件时都是在结尾进行。
1.2.3 mode=’xx’属性详情
t |
文本模式 (默认)。 |
|
x |
写模式,新建一个文件,如果该文件已存在则会报错。 |
|
b |
二进制模式。 |
|
+ |
打开一个文件进行更新(可读可写)。 |
|
U |
通用换行模式(不推荐)。 |
|
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
|
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
|
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
|
rb+ |
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
|
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
|
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
|
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
|
wb+ |
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
|
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
|
ab |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
|
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
|
ab+ |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
1) a 或 ab :
def test4(): # a或ab 用于文件的追加,把新内容加到已有内容后面
f = open("day008/day_008_txt1", mode='a', encoding="utf-8")
f.write("'《三字经》:'昔孟母,择邻处'")
f.flush()
f.close() def test5(): # w + 写读 (不常用) 直接覆盖
f = open("day008/day_008_txt1", mode='w+', encoding="utf-8")
f.write("啊")
f.flush()
f.close() def test6(): # a+ 追加读
# a+ 先写后读和先读后写都是获取不到内容的,不覆盖
f = open("day008/day_008_txt1", mode='a+', encoding="utf-8")
f.write("学习学习")
print(f.read())
f.flush()
f.close()
1.3 OS操作文件
文件修改:将老文件中内容读取到内存中 à修改à删除老文件à新文件名替换老文件名
弊端:内存容易溢出。解决办法:一行一行的读,一行一行的改
for line in file
import os
#方法一
def test10():
#打开文件,创建新文件
with open("day008/day_008_1.txt",mode='r',encoding='utf-8') as f1,\
open("day008/day_008_1_new.txt",mode='w',encoding='utf-8') as f2: content = f1.read()
new_content = content.replace('飞将','李广') # 替换内容
f2.write(new_content) # 写到 f2 中
os.remove('day008/day_008_1.txt') #删除原文件
os.rename('day008/day_008_1_new.txt','一生未封侯.txt') # # 方法二
def test11():
f1 = open("day008/day_008_1.txt", mode='r', encoding='utf-8')
f2 = open("day008/day_008_1_new.txt", mode='w', encoding='utf-8')
for line in f1: #一行一行取
new_line = line.replace('李广','飞将')
f2.write(new_line)
os.remove('day008/day_008_1.txt')
os.rename('day008/day_008_1_new','李广特点守')
f2.flush()
练习题
Python的标准库中的os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是非常重要。它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows中运行。
下面是os模块中常用的模块:
#os模块中比较常用的方法:
import os
def test12():
print('01 ',os.sep) #可以取代操作系统特定的路径分隔符。windows下为'\'
print('02 ',os.name) # 字符串指示你正在使用的平台。如Windows,它是'nt',linux/unix用户,它是'posix'
print('03 ',os.getcwd()) #当前工作目录,即当前Python脚本工作目录路径
print('04 ',os.putenv('username','username/')) #设置一个环境变量
print('05 ',os.environ['username']) #获取环境变量
print('06 ',os.listdir('E:\PythonWork\python1\day008')) #返回指定目录下的所有文件和目录名
print('07 ',os.curdir) #返回当前目录 ('.')
# print(os.remove('E:\PythonWork\python1\day008\008测试')) #删除一个文件
# print(os.system(command)) # 用来运行shell命令
# print(os.linesep) #给出当前平台使用的行终止符。Windows是'\r\n',linux是'\n',Mac是'\r'
# print(os.chdir(path)) #改变工作目录到path
test12()
运行截图:
os.path 常用的方法:
#os.path中常用方法:
import os
def test13():
print('01.',os.path.isfile('E:\PythonWork\python1\day008\day_008_文件操作.py'))
# 检验给出的路径是不是一个文件 返回值 True False print('02.',os.path.isdir('E:\PythonWork\python1\day008'))
# 检验给出的路径是不是一个目录 返回值 True False print('03.',os.path.exists('E:\PythonWork'))
#检验给出的路径是否真的存在 print('04.',os.path.getsize('E:\PythonWork'))
#获取文件大小 print('05.',os.path.abspath('day_008_文件操作.py'))
#获取文件绝对路径 print('06.',os.path.normcase('E:\PythonWork\python1\day008\day_008_文件操作.py'))
#规范路径字符串形式 print('07.',os.path.split('E:\PythonWork\python1\day008\day_008_文件操作.py'))
#把路径分割成目录和文件名,以元组返回 print('08.',os.path.splitext('E:\PythonWork\python1\day008\day_008_文件操作.py'))
#分离文件名和拓展名 print('09.',os.path.join('E:\PythonWork\python1\day008','day_008_文件操作.py'))
#使用'\\'连接目录与文件名,或连接目录与目录 print('10.',os.path.basename('E:\PythonWork\python1\day008\day_008_文件操作.py'))
#返回文件名 print('11.',os.path.dirname('E:\PythonWork\python1\day008\day_008_文件操作.py'))
# 返回文件路径
test13()
运行截图:
参考文档:https://www.cnblogs.com/mufenglin/p/7676160.html
python笔记006-文件操作的更多相关文章
- python笔记3 - 文件操作
file 对象使用 open 函数来创建,下面说一下对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件,读取/写入文件内容 3.关闭文件. 注意: 文件打 ...
- python笔记:文件操作
1.逐行打印整个文件 # -*- coding: utf-8 -*- f = open("test",'r',encoding="utf-8") count = ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python之常用文件操作
Python之常用文件操作
- Python之路第一课Day3--随堂笔记(文件操作)
一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
随机推荐
- Java学习日记基础篇(九) —— 集合框架,泛型,异常
集合框架 有事我们会需要一个能够动态的调整大小的数组,比如说要添加新员工但是数组已经满了,并且数组的大小是在定义的时候定死的,所以我们就需要一个能够动态调整大小的数组或者用链表解决,而java中提供了 ...
- 图灵学院java架构课程
1.wps文档地址 https://docs.qq.com/doc/DRVNLUndvTmFSdEhO 2.百度网盘地址 https://pan.baidu.com/s/1uxaTzJZHKrsw_H ...
- (转)服务端监控工具:nmon的使用
在性能测试过程中,对服务端的各项资源使用情况进行监控是很重要的一环.这篇博客,介绍下服务端监控工具:nmon的使用方法.. 一.认识nmon 1.简介 nmon是一种在AIX与各种Linux操作系统上 ...
- elasticsearch启动错误
requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled java.lang.UnsupportedOpe ...
- REST和SOAP的区别
转自:https://www.cnblogs.com/MissQing/p/7240146.html REST似乎在一夜间兴起了,这可能引起一些争议,反对者可以说REST是WEB诞生之始甚而是HTTP ...
- android.support.design库的引用和冲突解决
android.support.design库的引用和冲突解决 转 https://www.jianshu.com/p/2a0a2af9f2b4 最近在工程中使用到android.support.de ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_19-微服务之间认证-Feign 拦截器
4.2 Feign 拦截器 4.2.1 定义Feign拦截器 微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT. 在common工程添加依赖: <dependen ...
- 算法习题---3.12浮点数(UVa11809)
一:题目 尴尬的非会员水印 二:题目摘要 1.int和float比较 int共32位,可以表示的最大的数为2^32次方 float虽然也是32位,但是是以指数形式保存,指数占8位(含符号),最大127 ...
- linux下将文件上传到svn服务器
linux下将文件上传到svn服务器 摘自:https://blog.csdn.net/sky_yangge/article/details/41544773 2014年11月27日 16:47:57 ...