005-2-Python文件操作
Python文件操作(file)
文件操作的步骤:
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件(操作文件后记住关闭)
1.读写文件的基础语法:
open() 将会返回一个 file 对象,基本语法格式如下:
open(filename, mode)
- filename:变量包含你要访问的文件路径名称
- mode:决定打开文件的模式:读、写、追加等;默认文件的访问方式为只读(r)。
2.文件打开方式列表:
| \\\模式\\\ | 描述 |
|---|---|
| r | 以只读方式打开文件。文件的指针会放在文件开头,默认模式。 |
| rb | 以二进制格式打开一个文件用于只读,文件的指针会放在文件开头。copy文件时可以使用该模式; |
| r+ | 打开一个文件用于读写,文件的指针会放在文件开头。 |
| rb+ | 以二进制格式打开一个文件用于读写,文件的指针会放在文件开头。 |
| w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
| a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
| ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
3.writable() 和 readable()用于判断文件是否可写 或者 可读
with open("b.txt","r",encoding="utf-8") as b:
print(b.readable())
print(b.writable())
输出:
True
False
4.losed判断文件是否为打开状态!
f = open("b.txt","r",encoding="utf-8")
print(f.closed)
f.close()
print(f.closed)
输出:
False
True
2 Python File(文件)操作方法
知:有a.txt文件
正趣果上果
Interesting fruit fruit
词:郭婞
曲:陈粒
编曲/混音/和声:燕池
萧:吗子
Words: Guo 婞
Song: Chen tablets
Arrange / Mix / Harmony: Yan Chi
Xiao: Well
你佩桃木降妖剑
他会一招不要脸
哇呀呀呀
输在穷B
输在穷B
You wear peach down demon sword
He will shamelessly
Wow yeah
Lost in the absence of money
Lost in the absence of money
1.file.close()关闭文件,关闭文件不能再进行读写操作
close() 方法语法如下:
fileObject.close();
实例:
f = open("a.txt","r",encoding="utf-8") # 打开文件依照“r”模式,字符编码为“utf-8”
first_line = f.readline() # 读文件 1 行
print(first_line)
f.close() # 关闭文件
print(f.closed) # 用于判断 文件是否关闭状态
输出:
正趣果上果
True
2.file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入
flush() 方法语法如下:
fileObject.flush();
实例:
f = open("b.txt","w",encoding="utf-8")
f.write("Python 是一个非常好的语言。\n是的,的确非常好!!\n")
f.flush() # 刷新缓冲区 会 立即将文件写入硬盘
f.close()
3.__next__返回文件下一行。
f = open("a.txt","r",encoding="utf-8")
print(f.__next__().strip())
输出:
正趣果上果
4.read([size])从文件读取指定的字节数,未指定读取所有内容。
with open("a.txt","r",encoding="utf-8") as a:
print(a.read())
输出:
正趣果上果
... ...
Lost in the absence of money
5.readline([size])读取整行,包含"\n"字符,[size]返回指定大小的字节数
with open("a.txt","r",encoding="utf-8") as a:
print(a.readline().strip())
print(a.readline(4))
输出:
正趣果上果
Inte
6.readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表
with open("a.txt","r",encoding="utf-8") as a:
print(a.readlines())
7.seek(offset[, whence])设置文件的当前位置
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
with open("a.txt","r",encoding="utf-8") as a:
a.seek(30) # 将光标从 0 移动 30 个 字节
print(a.readline()) # 打印这行剩余的内容
print(a.tell()) # Widnows 系统下的换行代表2个字符,所以打印这行结束的 光标位置
输出:
ruit fruit
42
8.tell()打印当前光标所在的位置
with open("a.txt","r",encoding="utf-8") as a:
print(a.readline()) # 打印这行剩余的内容
print(a.tell()) # 打印这行结束的 光标位置
输出:
正趣果上果
17
9.write(str)将字符串写入到文件,没有返回值
with open("b.txt","w",encoding="utf-8") as b:
b.write("你好中国!")
输出如b.txt,不存在创建,存在覆盖;并写入你好中国:
你好中国!
10.writelines()向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表,换行需要\n符
with open("b.txt","w",encoding="utf-8") as b:
b.writelines(["你佩桃木降妖剑\n","他会一招不要脸\n"])
输出创建b.txt:
你佩桃木降妖剑
他会一招不要脸
11.writable() 和 readable()用于判断文件是否可写 或者 可读
with open("b.txt","w+",encoding="utf-8") as b:
b.writelines(["你佩桃木降妖剑\n","他会一招不要脸\n"])
print(b.readable())
print(b.writable())
文件处理案例
1. sed替换文件内的指定内容
cat sed.py
import sys
import os
if len(sys.argv) != 4: # 判断用户给的参数个数
print("\"want 4 parameters\"Usage: sed.py old_file new_file file_name")
exit(1)
with open(sys.argv[3],"r",encoding="utf-8") as a_r, open("."+sys.argv[3]+"swp","w",encoding="utf-8") as b_w:
for i in a_r:
b = i.replace(sys.argv[1], sys.argv[2]) # 替换用户输入的参数
b_w.write(b)
os.remove(sys.argv[3]) # 删除源文件
os.rename("."+sys.argv[3]+"swp",sys.argv[3]) # 将swp文件重新命名为 源文件
2.copy一个不知存储方式的文件到别处
cat copy.py
import sys
# print(sys.argv)
if len(sys.argv) != 3: # 判断用户给的参数个数
print("\"want 3 parameters\"Usage: cp [OPTION]... SOURCE DEST")
exit(1)
with open(r"%s" % sys.argv[1],"rb") as ly_r, open(r"%s" % sys.argv[2],"wb") as ly_w:
for i in ly_r:
ly_w.write(i)
005-2-Python文件操作的更多相关文章
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- python 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- HDOJ 1754 I Hate It (线段树)
题目: Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要 ...
- 10 个 MySQL 经典错误【转】
Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行) 问题还原 mysql> show variables like '%max_connec ...
- linux shell中 if else for循环以及大于、小于、等于逻辑表达式的历程
作者:邓聪聪 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格.笔者就曾因为空格缺少或位置不对,而浪费好多宝 ...
- u3d常用代码小集合
01.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){ if(theCollision.gameObject.name == ...
- Nginx和apache服务器中php运行方式
PHP5的CGI方式的一大优势是内置了FastCGI的支持,只需指明绑定的地址和端口参数便可以以FastCGI的方式运行,如下: php-cgi -b 127.0.0.1:9000 配置Nginx的P ...
- 子元素position:absolute定位之后脱离文档流,怎么使子元素撑开父元素
纯粹的CSS无法实现.因为position:absolute就是脱离文档流,怎么能让父元素不塌陷呢? 目前想到的只能用js和jquery来实现了,用js获取子元素的高度,赋值给父元素. <!DO ...
- 027_磁盘维护命令du等
一.du查看磁盘空间大小排除指定目录的的用法. 下面的例子为排除/data目录,因为/data目录是单独挂载的磁盘 [pe@jyall-3 /data]$ sudo du --exclude='/da ...
- apache配置文件语法错误命令:httpd -t
cmd命令行切换到C:\wamp\bin\apache\apache2.4.9\bin目录 输入httpd -t命令 错误如下: 1.Syntax error on line 92 of C:/Apa ...
- MS SqlServer还原数据库,出现媒体簇的结构不正确
出现此问题,是数据库版本过低导致,只要保证连接实例所在的版本号>=要还原的数据库的版本号,即可还原成功. 可以使用select @@VERSION,查看当前实例版本.
- postgresql 触发器 更新操作
1 前言 功能需求:当一张表格某个字段变化,另一张表某个字段写入该值 2 代码 CREATE OR REPLACE FUNCTION "public"."synStatu ...