day9 python学习 文件的操作 读 写 seek
文件的操作
1 文件的打开操作:
文件句柄 = open('文件路径', '模式')
f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径的话要写成 r'c:\user\administrator\'这种形式
后边选择的编码方式要选择已保存的文件保存的编码方式,
f.write('nihao a ')
f.seek(2) seek 这里指的是字节位置如果出现中文就会一个字三个字节位,
count=f.readlines()
print(count)
f.close() #操作系统级别的关闭,这里一定要操作完成后写 免得程序占用内存
2.常用的文件操作:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【不可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】、先读再写会在末尾加,先写在读会覆盖式的添加在前边
obj1 = open('filetest.txt', 'r+',encoding='utf-8')
obj1.write('aaaaa \n') # 这样操作的话他会将原来文件的第一行覆盖,- w+,先写再读。【这个方法打开文件会清空原本文件中的所有内容,将新的内容写进去,之后也可读取已经写入的内容】
- a+,追加模式,可读,不存在则创建,存在则只追加内容
- rb,wb,ab# "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注) 这也是常用的读写方式 f=Open('ni hao','rb') #注意 它后边不用再写编码方式,因为他是byte型 就是编码方式为utf-8或gbk 所有不用再写
- #但是为什么其他的要写encoding="utf-8"或”gbk" 因为python3 默认编码方式是UTF-8
- python2是ascii
- 不能用于存储和传输 需要将他转换为其他的格式才(被打开文件的编码格式)可以
- #
seek:移动光标到指定位置 f.seek(0)将光标移动到最开头, f.seek(0,2)将光标移动到最后
tell:告诉你当前光标的位置
f=open('wangyakun','a+',encoding="utf-8")
f.write('nihao')
f.seek(0)#因为写完之后指针位置(光标位置,)会到达最后,此时打印会打不出来
#因为光标后边已经没有内容了,所以要将光标前移
print(f.read(),f.tell())#打印的结果,a+追加的意思,可读,这是结果
# 我nihao 8 tell()的意思是当前指针的位置一个汉字3个字节所以是8(字节位)
#还有一点要注意,当有换行时,换行符其实是(\r\n )所以它占两个字符位置
f=open('wangyakun','r+',encoding='utf-8')
for count in f:#用for循环读取文件中的内容
if count.strip():#此用法是去除(不打印)没内容的行 他可以去掉空格换行符 制表符
#因为没内容的行用strip的话就会是False条件不成立,走不下去。
print(count.strip())
读的第三种方式 f.readline()
和 f.readlines()
按照行读,每次执行都会读取下一行内容
f=open('wangyakun','r+',encoding='utf-8')# 我们文件内的内容第一行是enen 得二行才是 nihao
f.seek(0)
f.readline() # 这是第一次的结果 它现在指的是nihao
print(f.readline()) #打印结果是 nihao 但是打印出的结果直接是 nihao 因为程序是按行来执行的,#现在打印的是第二个数据,所以不能这样打印
直接在第一个f.readline() 那里print就行
f.readlines()
f=open('wangyakun','a+',encoding="utf-8")
list=[]
f.seek(0)
count=f.readlines()
print(count) #打印结果['你是谁\n', 'ni hao\n', '哈哈'] 可以看到他打印出来的是一个列表
f.read()的用法 #如果是f=open("歌曲","rb",encoding="utf-8")
rb 这中形式的话就按照字节位来读取
其他的形式就是以字符来读他()括号里的数字就是它要读的字符位数,如果是6就读前6个字符
f=open('wangyakun','r+',encoding='utf-8')
count=f.read(1) #读取第一个字符
print(count)#打印结果是 网 这里我们可以看到read() 这个括号里的内容是一个一个按字符数据来打印的
读取列表的总内容:
网友
enen
oo
haode
jishi
4.判断文件
print(f.readable())# 判断文件是否可读
print(f.writable())# 判断文件是否可写
w+
先写在读
虽然如此,可以读,但是读的时候刚,光标已经到了最后一位,所以直接读的话 重要
不能读出内容,所以样先将光标移动到f.seek(0)的位置上。
f=open('wangyakun','w+',encoding='utf-8')
f.write('\nni hao\n')
f.write('哈哈')
f.seek(0)
print(f.read())
print(f.read(),f.tell())#打印的结果,a+追加的意思,可读,这是结果
我nihao 8 tell()的意思是当前指针的位置一个汉字3个字节所以是8(字节位)
f=open('wangyakun','r+',encoding='utf-8') 重要
for count in f:#用for循环读取文件中的内容
if count.strip():#此用法是去除去掉空格换行符,制表符,(不打印)没内容的行
#因为没内容的行用strip的话就会是False条件不成立,走不下去。
print(count.strip())
如何将文件中的数字替换
#1如果修改文件中的内容,打开旧文件,读出内容,修改内容,添加到新的文件中去,然后删除旧的,重命名新的。
f=open('文件',encoding='utf-8')
f2=open('文件.bak','w',encoding='utf-8') 文件.bak 这个一般都是以此命名准备替换原来文件的
for line in f:
# old_content=line.strip()
if '原来'in line:
new_conten=line.replace('原来','新')
else: new_conten=line
f2.write(new_conten)
f.close()
f2.close()
import os
os.remove('文件')
os.rename('文件.bak','文件')
with的用法
2.With的用法:
文件的打开和关闭:
一般是
with open("文件1",encoding='utf-8') as f,open("文件.bak","w",encoding="utf-8")as f1:
这么用可以打开一个文件也可以打开两个文件,而且用with打开文件不用再在后边写 f.close()这样会免得忘记
文件可以用for循环去写
文件的写
可以在for循环中去写入内容,因为在文件中写入一行之后,光标就移动到下一行,再写就继续下移,总是停留在最后位置,所以可以循环写入 f2=open('文件','w',encoding='utf-8')
li=['123\n','dasdasd\n','ssssss\n','zzzz\n']#文件.bak 这个一般都是以此命名准备替换原来文件的
for line in li:
f2.write(line)
print(f2.tell())
f2.close() 打印的结果如下:光标随着行行的写入依次往下移动
5
14
22
28
day9 python学习 文件的操作 读 写 seek的更多相关文章
- python学习----文件的操作(2)
1.文件指针的操作 f=open("yesterday","r",encoding="utf-8") #文件句柄 #文件内指针的操作 pri ...
- [Python] Python 学习 - 可视化数据操作(一)
Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...
- python学习 文件操作
一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...
- Python学习---文件操作的学习1208
1.1. 对文件操作基本操作: 操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 注意:pyton中操作的文件是utf8保存的,打开文件时open函数是通过操作系统 ...
- python学习——文件操作
打开文件 f = open(文件名, 文件打开模式,文件编码) ‘w’:只写模式,它是只能写,而不能读的.如果用’w’模式打开一个不存在的文件,则会创建新的文件开始写入:如果用’w’模式打开一个已存在 ...
- day9 python之文件操作
1.文件操作 1.1 基本模式 # 格式 f = open("相对路径/绝对路径",mode = "模式",encoding = "编码级" ...
- 总结day7 ---- 文件操作,读,写,追加,以及相关方法
内容大纲 一:文件的基本操作, >常见问题 >encoding >绝对路径和相对路径的 二:文件的读写追加相关操作 >读(r, r+ ,rb,r+b) >写(w,w+,w ...
- 文件及文件的操作-读、写、追加的t和b模式
1.什么是文件? 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位. 文件的操作核心:读和写 对文件进行读写操作就是向操作系统发出指令,操作系统将用户或者应用程序对文件的读写操作转换为具体的 ...
- python对文件的操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...
随机推荐
- codeforces 966c//Big Secret// Codeforces Round #477 (Div. 1)
题意:一个数组,重新打乱后前缀异或和递增.问这样的排列. 将所有元素按照二进制最高位分组.每次选当前前缀和sum的二进制最低的0位,再从分组中挑一个作为答案.先放首1在较低位的再放首1在较高位的总是可 ...
- Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息
Android使用Http请求登录,则通过登录成功获取Cookie信息并同步,可以是下一次不用登录也可以查看到个人信息, 注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加载登录界面.C ...
- 【转】Vue.js特点
作为一名Vue.js的忠实用户,我想有必要写点文章来歌颂这一门美好的语言了,我给它的总体评价是“简单却不失优雅,小巧而不乏大匠”,下面将围绕这句话给大家介绍Vue.js,希望能够激发你对Vue.js的 ...
- CF-499div2-E-裴蜀定理
E. Border time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...
- Android studio jni
首先我们要明确几个概念,jni,ndk,共享库(.so). jni是java native interface的缩写,java 本地接口.它提供了若干的API实现了Java和其他语言的通信(主要是C/ ...
- 安装 Android Studio
安装 Android Studio 只需轻松点击几下.(您需要已下载 Android Studio.) 若使用 JDK 1.8,在 Mac 系统上运行 Android Studio 可能出现一些已知的 ...
- C#图片转换成二进制流并且保存到sql server数据库
注意:我要存储文件二进制流的列的类型是text,不是image类型. 我已经实现了从数据库中读取text类型的二进制流,,现在就是不知道怎么存进去. 我的部分关键代码: StreamReader sr ...
- OC MRC之计数器的基本操作(代码分析)
/* 1.方法的基本使用 1> retain :计数器+1,会返回对象本身 2> release :计数器-1,没有返回值 3> retainCount :获取当前的计数器 4> ...
- 【DevExpress v17.2新功能预告】WinForms上的图表增强
在WinForms Charts v17.2中,我们新增了一些有用的功能,开发人员和最终用户可能都会喜欢. 基于标准的过滤 Chart控件已经支持一系列的过滤,但是在这个版本中,我们用FilterCr ...
- 突破10万高并发的nginx性能优化经验(含内核参数优化)
写的很好,推荐阅读. 转载:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并 ...