一、打开文件

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. 功能强大的系统配置工具-- Siebel Tools

    Siebel Tools 是Siebel 为其CRM产品开发人员专门提供的系统配置工具,系统的客户化修改以及系统升级控制等都是通过该工具进行配置(Configuration) .该工具直接修改Sieb ...

  2. ARM 中可用性集使用的注意事项

    Azure 目前有两种部署模型:经典部署模型 (ASM) 和资源管理器 (ARM).如果您之前使用过 ASM 模式下的可用性集,那么很可能在使用 ARM 模式下的可用性集时,会遇到一些问题或者疑惑.这 ...

  3. Azure 9 月新发布

    亲爱的小伙伴们, 我们很高兴向您宣布以下新功能与相关调整,欢迎关注与使用. 1. SQL 数据库弹性池  2. 存储指标更新 3. SQL 数据库 P15 4. Azure 高级存储 5. Wosig ...

  4. visual studio code配置项

    // 通过将设置放入设置文件中来覆盖设置. { //-------- 编辑器配置 -------- // 控制字体系列. "editor.fontFamily": "Co ...

  5. Oracle自定义行转列函数

    --行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat( ...

  6. 再学UML-深入浅出UML类图(五)

    实例分析3——售票机控制程序 某运输公司决定为新的售票机开发车票销售的控制软件.图I给出了售票机的面板示意图以及相关的控制部件. 图I   售票机面板示意图 售票机相关部件的作用如下所述: (1) 目 ...

  7. Git的认识与学习

    第一部分:我的git地址是https://github.com/monkeyDyang 第二部分:我对git的认识 Git是一种良好的.支持分支管理的代码管理方式,能很好地解决团队之间协作的问题.每个 ...

  8. 【转载】#457 Converting Between enums and their Underlying Type

    When you declare an enum, by default each enumerated value is represented internally with an int. (S ...

  9. 在已有软件加壳保护 下实现 Inline hook

    如写的不好请见谅,本人水平有限. 个人简历及水平:. http://www.cnblogs.com/hackdragon/p/3662599.html 正常情况: 接到一个项目实现对屏幕输出内容的获取 ...

  10. HDU 1711 Number Sequence 【KMP应用 求成功匹配子串的最小下标】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/O ...