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 ...
随机推荐
- tez 0.9.0 配置
官网: https://tez.apache.org/releases/0.9.0/tez-api-javadocs/configs/TezConfiguration.html
- 微信小程序wx.request的简单封装
前言 之前写小程序,每次请求后台时都直接调用原生的API,wx.request,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单 ...
- mybatis bind标签
开门见山的说,平时写模糊查询,一直用${name},例如: select * from table where name like '%${name}%' 后来知道了,这样写可能会引发sql注入,于是 ...
- 【MyEclipse初级】Web项目的访问路径更改
背景:MyEclipse 开发的Web项目,发布Web项目到Tomcat,从浏览器访问路径配置和工程名称一致,思考是否可以自定义访问虚拟路径. 目标:修改访问Web项目的虚拟路径 步骤:工程名右键-& ...
- [微信小程序]实现一个自定义遮罩层
正文: 先上效果图: 点击按钮Show显示遮罩层,再次点击屏幕任何地方隐藏遮罩层; <button bindtap="showview">Show</button ...
- JSP页面中如何注入Spring容器中的bean
第一步在JSP页面中导入下面的包: <%@page import="org.springframework.web.context.support.WebApplicationCont ...
- ObjectAnimator简单示例
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- ARM 之一 ELF文件、镜像(Image)文件、可执行文件、对象文件 详解
[转]https://blog.csdn.net/ZCShouCSDN/article/details/100048461 ELF 文件规范 ELF(Executable and Linking ...
- LVS搭建负载均衡集群(二)——DR模式
(1).DR模式和TUN模式介绍 Direct Routing(直接路由):director分配请求到不同的real server.real server处理请求后直接回应给用户,这样director ...
- AssetsLibrary 实现访问相册,选取多张照片显示
#import "ViewController.h" #import <AssetsLibrary/AssetsLibrary.h> /** * ALAssetsLib ...