一、打开文件

open(文件名,模式,编码)
#默认模式为只读

f = open("c:/asd.txt")
date = f.read()
f.close()
print(date)

打开文件时,需要指定文件路径和以何种方式打开文件,打开后,即可获取该文件
句柄,如后通过此文件句柄对该文件操作。
打开的模式有:
r,只读文件,【默认】
w,只写文件,【不可读,不存在创建;存在则清空内容】
x,只写文件,【不可读,不存在创建,存在则报错】
a,追加模式,【不可读,不存在创建,存在则只追加内容】

"+"表示可以同时读写某个文件

r+,读写【可读,可写】
w+,写读【可读,可写】
x+,写读【可读,可写】
a+,写读【可读,可写】

"b"表示以字节的方式操作

rb或r+b
wb或w+b
xb或w+b
ab或a+b

以b方式打开时,读取到的内容是字节类型,写入时也需提供字节类型

只读情况下写入就报错
基本打开方式
#1、r,只读

f = open("ha.log","r")
f.write("sdf")#只读模式下写入就报错
f.close()

#2、w,只写模式

f = open("asd","w")#清空原有文件内容
f.write("asd")#重新写入
f.close

#3、x,只写模式

f = open("asd","x")#不存在文件,就创建,存在文件就报错
f.write("asd")
f.close

#4、a,追加模式

f = open("asd","a")#不存在创建,存在追加
f.write("asd")
f.close

字符串转字节(读)

f = open("asd","r")#在这里打开时可以加encoding = "utf-8"
date=f.read()
f.close()
b = bytes(date,encoding="utf-8")
print(b)

字节方式打开
1、只读 rb

f = open("asd","rb")#在这里打开时是以字节方式读,所以不需要加
data = f.read() #encoding="utf-8"
f.close()
print(type(data))

2、只写

f = open("asd","wb")
data = f.write(bytes("中国",encoding = "utf-8"))
f.close() #用二进制方式写入时,需要把字符串转换为二进制
print(type(data))

#普通打开
#python内部将010101自动转换为字符串(因为在本质上在在硬盘里存的就
是01010,所以在读取数据时也是0101,而普通打开时,会自动将字节转换为字符串
默认使用utf-8编码
而在转字符串是我们可以指定什么编码格式转成字符串)
#010101======>python解释器(转换为字符串)=====>程序员看到

#字节方式
用字节方式打开时字节直接给到程序员,没有编译过程,所以不能添加encoding =""
在你写入是,如果你写入的是字符串,你需要吧字符串转换为010101,不然会报错
因为字节方式打开没有编译过程,存储时也不会自动编译成0101所以需要自己吧字符串转换为
字节f.write(bytes("中国",encoding = "utf-8")),才能保存。
#010101======>程序员看到
文件里原来存储的是"中国"

f = open("asd","rb")
data = f.read()
f.close()
print(data)
data1 = str(data,encoding = "utf-8")#如果是用python存储的就是utf-8,如果是自己在记事本写的可能需要用gbk

二、操作文件

写入时

f = open("aaa","rb")
str_a = "中国"
bytes_a = bytes(str_a,encoding="utf-8")
f.write(bytes_a)
f.close()

#r/w/x/a ==>输入输出都是字符串
#rb/wb/xb/ab ==>输入输出都是字节
用时一般不用带b的

#r+先读再写 从开头开始写,里面有内容也是

f = open("asda.log","r+")
data = f.read()
print(type(data),data) f.write("田本人")
a=f.read()
print(type(a),a)#在这里输出的是空的,在读写时有一个指针,你读一个,指针就向后移一个,追加一个字符
#就再向后移一个,等你再次输出是,指针就指向空的地方,所以输出空的
f.close() print(f.tell())#输出指针位置,字节,一个汉字三个字节
print(f.read(3))#输出3个字符,指针也移动那个位置

读的时候可以调整指针,写的时候直接写到最后,指针也yi'dao
上面???????????????????????????????????????????有错??
有一个例子

f = open("asda.log","r+")
data = f.read(3)
print(type(data),data)
print(f.tell())
f.write("田本人")
print(f.tell())
a=f.read()
print(type(a),a)
print(f.tell())
f.close()

结果
6
36
<class 'str'> 田本人田本人田本人田本人 #???
36
根据上面的那个例子,好像读取时的指针和写入时的指针好像不是同一个

#w+ 先清空,在写过之后,就可以读了
#先清空,之后写的就可以读了,写,指针指到最后

f = open("ha.log","w+",encoding="utf-8")
f.write("何莉莉")
f.seek(0) #这个可以将指针移动到最开始(0),不移动,在输出是就的是空的
data = f.read()
f.close()
print(data)

#x+ 和w+雷同,附加一个功能,如果文件存在,就报错

#a+ 打开文件的同时直接把指针指到最后
#写时,追加,指针移到最后

f = open("asda.log","a+",encoding="utf-8")
print(f.tell())
data = f.read()
print(data)
f.seek(0)
data = f.read()
print(data)
f.close()

#r+
#从开始向后读
#写,追加,指针调到最后

#w+
#先清空所有内容
#从最开始向后读
#写,追加,指针调到最后

共有特性:seek调整位置,读取
这些特性可以根据.seek() .tell() .read(3) .write() 进行实验调出
#read()加参数就是读到那个位置,不加读取所有
如果加一个b,就是读的字节

三、文件关闭

close()
关闭文件

fileno()
文件描述符
io操作,检测一个文本等记不清了

fulsh() 
刷新文件内部缓存区
f1 = open("asda.log","r+",encoding="utf-8")
f1.write("啊啊啊啊啊")
#当文件还没有关闭时,这些东西就还没有存到硬盘里,只是在内存里
就像你在记事本输入了一串字符但是没有保存一样,只是在内存里,flush()功能就是
把写入的字符进行存储,就像记事本里的保存一样,把内存的内容刷新到硬盘里

readable()
是否可读

readline()
仅读取一行数据(自动把指针放在第一行末尾,再读时,就是从第二行开始)

seekable()
指针是否可操作

truncate() 143 11.10
依赖于指针,截断数据,仅保留指定长度的数据

write()

f = open()时直接把文件里的内容放到内存里防止问价太大把内存撑爆
可以选择readline()一行一行的读,或者 for i in f: print(line)这样来一行一行的读

with open(xxx,"") as f:
  f.read()

等同于

f = open(xxx,"")

f.read()

但是使用上面那个可以不用再写关闭文件的函数
python自动帮你关闭

py2.7之后 with ..as.. 同时打开两个文件

with open("log1","r") as obj1,open("log2","w") as obj2:
  for line in obj1:
    obj2.write(line)

#从log1文件里一行一行的读取log1文件的内容,然后再一行一行的写入log2中(读一行写一行)

回顾总结
1、lambda 可以接受两个参数
  func = lambda x,y:9+x
  参数: x,y
  参数体: 9+x==> return
  func: 函数名

  def func(x,y)
    return x+9

单单一个函数名,不加括号,代之这个函数,加括号就是执行者个函数

    def f1()
return "x"
def f2(x)
x()
return "a"

f2(f1)#这里的f1和x是一样的
在f2(f1)中,如果在f2的函数体中执行了x()就相当与执行了f2函数,
就相当于f2()
函数可以当作参数传递

def f3(arg):
  print(arg)

python文件操作(2017-8-5)的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  4. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  5. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  6. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  7. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  8. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

  10. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

随机推荐

  1. 增强for循环 java.util.ConcurrentModificationException

    Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元 ...

  2. CDS view注解解析 - @Environment.systemField

    下面的CDS view使用到了@Environment.systemField这个注解,定义了两个参数#SYSTEM_LANGUAGE和#USER. 这个view从CRM物料主数据的产品抬头表COMM ...

  3. SAP成都研究院许聚龙:Hello, Coresystems!

    Jerry的前一篇文章<SAP成都研究院数字创新空间沟通S/4HANA和C/4HANA的智能服务演示视频和Coresystems分享预告>已经提到,接下来会由SAP成都研究院数字创新空间的 ...

  4. PHP使用memcache长连接作为RPC客户端需要注意的地方

    memcache扩展版本 3.0.8 一. retry_interval $retry_interval 某个rpc服务器端失败后故障转移的时间,retry_interval的时间内,该节点会被一直标 ...

  5. Ubuntu下Qt(Retex)无法输入中文

    这个问题从我第一次在Ubuntu上使用Qt便困扰着我,奈何之前一直没认真去解决掉这个问题.今天作死想想,这个不可能解决不掉的.因为那么多人用Ubuntu,而且又那么多人用Qt的产品,比如Retext. ...

  6. JavaMail简单应用

    版权声明:本文为博主原创文章,未经博主同意不得转载. --caicongyang https://blog.csdn.net/caicongyang/article/details/33731395 ...

  7. python:协程

    1,如何实现在两个函数之间的切换? def func1(): print(l) yield print(3) yield def func2(): g =func1() next(g) print(2 ...

  8. 【洛谷1494】[国家集训队] 小Z的袜子(莫队)

    点此看题面 大致题意: 有\(N\)只从\(1\sim N\)编号的袜子,告诉你每只袜子的颜色,\(M\)组询问,每组询问给你一个区间\([L\sim R]\),让你求出小Z随机抽出\(2\)只袜子时 ...

  9. 2018.11.12 Spring事务的实现和原理

    Spring事务用法示例与实现原理 关于事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性.一致性.隔离性和持久性.对于Spring事务,其最终还是在数据库层面实现的,而 ...

  10. 关于object类的两个重要方法以及为什么重写equals一定要重写hashcode()

    toString()----------------------输出对象的地址 重写后输出对象的值对象.equals(对象)---------------比较两个对象的内存地址 可以被重写,重写后比较 ...