python文件操作与编解码
1 # 文件操作
2
3 '''
4 1.文件路径:要知道文件的路径
5
6 2.编码方式:要知道文件是什么编码的。utf-8 gbk......
7
8 3.操作方式:要以什么样的方式进行打开这个文件,比如是只读打开、可读可写打开、追加、
9
10 r:只读
11
12 rb:二进制方式只读方式打开一个文件
13
14 w:只写,打开文件默认会将文件内容全部删除
15
16 wb:二进制方式只写。bytes类型,打开文件默认会将文件内容全部删除
17
18 a:只追加
19
20 ab:以二进制方式追加进去,bytes类型
21
22 r+:可读可写
23
24 r+b: 二进制方式可读可写,以bytes类型。bytes类型编码是utf-8或gnk的编码
25
26 w+:可写可读,打开文件默认会将文件内容全部删除
27
28 w+b:二进制方式可写可读, 打开文件默认会将文件内容全部删除
29
30 a+:可追加可读
31
32 a+b:二进制方式可追加可读
33 '''
34
35 # open 完以后会创建一个文件句柄,只读方式,以utf-8编码方式打开一个文件,得到这个文件的描述符对象
36 # encoding可以是utf-8、gbk、gb2312等,文件是什么编码保存的,这里就以什么编码方式打开
37 # f = open('测试.txt', mode='r', encoding='utf-8') # 只读
38 #
39 # content = f.read() #
40 #
41 # print(content)
42 #
43 # f.close()
44 #
45 # # 以bytes类型,二进制方式只读方式打开一个文件
46 # f = open('测试.txt', mode='rb') #不用加encoding的原因是因为有b,属于bytes类型,默认就是utf-8的二进制
47 #
48 # content = f.read()
49 #
50 # print(content)
51 #
52 # f.close()
53 #
54 # # 只写打开操作一个文件,没有这个文件,则会创建这个文件。有这个文件则会将源文件的内容删除后再进行写
55 # f = open('测试1.txt', mode='w', encoding='utf-8') # 只写
56 # f.write('高')
57 # f.close()
58 #
59 #
60 # # 只写打开操作一个文件,没有这个文件,则会创建这个文件。有这个文件则会将源文件的内容删除后再进行写
61 # f = open('测试1.txt', mode='wb') # 字节二进制的方式写
62 # f.write(b'7891234') # 必须加b,表示以bytes类型写入,utf-8。 如果不加b,就是str类型,str编码方式是unicode,不加b不行
63 # f.write('中文'.encode('utf-8'))
64 # f.close()
65 #
66 #
67 # # 追加
68 #
69 # f = open('测试1.txt', mode='a', encoding='utf-8')
70 # f.write('中文舒服舒服')
71 # f.close()
72 #
73 # # 追加,二进制bytes类型追加、utf-8、gbk。 bytes类型是utf-8或gbk编码方式的
74 # f = open('测试1.txt', mode='ab')
75 # f.write('123456'.encode('utf-8'))
76 # f.close()
77
78 # 可读可写,
79 # f = open('测试1.txt', mode='r+', encoding='utf-8')
80 # print(f.read()) # read后,光标会到最后一个字符位置
81 # f.write('777') # 会从光标位置开始写,写完后停留在写完的位置
82 # print(f.read()) # 从光标位置开始读,读到最后,光标停留在最后
83 # f.close()
84
85 # f = open('测试1.txt', mode='r+b')
86 # print(f.read()) # read后,光标会到最后一个字符位置
87 # f.write('1234567'.encode('utf-8')) # 会从光标位置开始写
88 # print(f.read()) # 从光标位置开始读,读到最后,光标停留在最后
89 # f.close()
90
91 # f = open('测试1.txt', mode='w+', encoding='utf-8') # 打开后先全部清除了文件内容
92 # print(f.read()) # read后,光标会到最后一个字符位置,但是因为先清除了所以什么都没有
93 # f.write('1234567') # 会从光标位置开始写
94 # print(f.read()) # 从光标位置开始读,读到最后,光标停留在最后,什么都没有
95 # f.close()
96
97 # 可写可读
98 # f = open('测试1.txt', mode='w+', encoding='utf-8') # 打开后先全部清除了文件内容
99 # print(f.read()) # read后,光标会到最后一个字符位置,但是因为先清除了所以什么都没有
100 # f.write('1234567') # 会从光标位置开始写
101 # f.seek(0) # 光标调到最开始
102 # print(f.read()) # 从光标位置开始读,读到最后,光标停留在最后,有内容了
103 # f.close()
104
105
106 # 功能详解
107
108 # f = open('测试1.txt', mode='r+', encoding='utf-8') # 打开后先全部清除了文件内容
109 # f.seek(3) # 光标的移动是按照字节算的,如果文件里是中文,并且如果是utf-8编码,那么一个中文是3个字节。utf-8一个英文或其他ascii是一个字节
110 # print(f.read(8)) # 读多少个字符,注意:是字符,不是字节。如果文件里是中文这两个字,读2就是中文
111 #
112 # print(f.tell()) # 得到光标的当前位置
113 # print(f.readable()) # 判断文件是否可读的
114 # print(f.writable()) # 判断文件是否可写
115 # f.seek(0)
116 # # print(f.readline()) # 一行一行读
117 # print(f.readlines()) # 读取多行,每行作为list的元素放入到list中,返回list类型
118 # f.truncate(4) # 将源文件拆剪,前4个
119 # print(f.read())
120 #
121 #
122 # f.close()
123
124 # f = open('测试1.txt', mode='r+', encoding='utf-8')
125 #
126 # # 遍历文件,一行一行的打印
127 # for line in f:
128 # print(line)
129 #
130 # f.close()
131
132 # 另外一种文件操作,close可以无需关心,close自动关闭, with是关键字,在缩进中操作
133 with open('测试1.txt', mode='r+', encoding='utf-8') as f:
134 print(f.read())
135
136 # 另可以同时打开多个,在缩进中操作
137 with open('测试1.txt', mode='r+', encoding='utf-8') as f, \
138 open('测试.txt', mode='r+', encoding='utf-8') as f1:
139 print(f.read())
140 print(f1.read())
141
142
143
144
145
146 # 小练习:注册与登录
147
148 # 注册:将注册的用户名和密码写入到一个文件中,然后提示注册成功
149
150 # 登录:等待用户输入的用户名和密码,然后和文件中的注册用户名和密码进行比较,匹配则登录成功
1 username = input('请输入你要注册的用户名:')
2 password = input('请输入你要注册的密码:')
3
4 with open('list_of_info', mode='a', encoding='utf-8') as f:
5 f.write('{}\n{}'.format(username, password))
6
7 print('注册成功')
8
9 count = 0
10
11 getusername = ''
12 getpassword = ''
13 lis = []
14 while count < 3:
15 getusername = input('请输入你的用户名:')
16 getpassword = input('请输入你的密码:')
17
18 with open('list_of_info', mode='r+', encoding='utf-8') as f:
19 lis = f.readlines()
20 print(lis)
21 if getpassword == lis[0].strip() and getpassword == lis[1].strip():
22 print('登录成功')
23 break;
24 else:
25 print('请重新输入')
26 count += 1
1 # str --->byte encode 编码
2 s = '二哥'
3 b = s.encode('utf-8')
4 print(b)
5 #byte --->str decode 解码
6 s1 = b.decode('utf-8')
7 print(s1)
8
9
10 s = 'abf'
11 b = s.encode('utf-8')
12 print(b)
13 #byte --->str decode 解码
14 s1 = b.decode('gbk')
15 print(s1)
文件是不能修改的,如果想要修改文件,只能将源文件读入到python内存中,然后进行修改,然后写入到一个新的备份文件中,然后删除源文件,然后将备份文件重命名为源文件的名字
1 # 文件是不能修改的,所以想要修改文件时,需要在内存中修改后写入到另一个备份文件中,然后将源文件删除,然后将备份文件重命名为之前的名字
2 with open('小护士班主任', encoding='utf-8') as f, open('小护士班主任.bak', 'w', encoding='utf-8') as f2:
3 for line in f:
4 if '星儿' in line:
5 line = line.replace('星儿', '海角')
6 f2.write(line)
7
8 # 删除文件 和 重命名文件
9 import os
10 os.remove('小护士班主任')
11 os.rename('小护士班主任.bak', '小护士班主任')
python文件操作与编解码的更多相关文章
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- 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 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
随机推荐
- 【原创】有利于提高xenomai 实时性的一些配置建议
版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正. @ 目录 一.影响因素 1.硬件 2.BISO(X86平台) 3.软件 4. 缓存使用策略与GPU 二.优化措施 1. BIO ...
- 出Bug表-假如诸葛亮是程序员(1024程序员节日献礼)
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 出Bug表 南瓜言:先司创业未半而中道破产,今培训造才,网课套钱,此诚百家争鸣之时也.然优秀骨干组队离职,新招小白乐于摸鱼者 ...
- Qlik Sense学习笔记之Mashup开发(二)
date: 2019-01-26 11:28:07 updated: 2019-01-26 11:28:07 Qlik Sense学习笔记之Mashup开发(二) 1.Mobile SPA UI Fr ...
- CentOS7 Nginx-1.10.3编译安装
cat > nginx.sh <<EOF #停止apache,避免抢占端口号 systemctl stop httpd #创建nginx运行账户,非登录用户,不创建家目录 usera ...
- PHP定界符的用法
当面临大段的负责的文本输入的时候,建议使用定界符. 例如: $age = 28; $str = <<<cont 第一行数据 第二行数据 特殊字符 ' " asdf abc ...
- 【总结】sqlserver
1 基础 1.1 简介 sqlserver是闭源的,必须运行在windows平台上的数据库.默认事务隔离级别是读已提交(commit read).全称Microsoft SQL Server,说以也被 ...
- Java中final修饰的方法是否可以被重写
这是一次阿里面试里被问到的题目,在我的印象中,final修饰的方法是不能被子类重写的.如果在子类中重写final修饰的方法,在编译阶段就会提示Error.但是回答的时候还是有点心虚的,因为final变 ...
- python爬虫使用scrapy框架
scrapy框架提升篇 关注公众号"轻松学编程"了解更多 1.创建启动爬虫脚本 在项目目录下创建start.py文件: 添加代码: #以后只要运行start.py就可以启动爬虫 i ...
- [Luogu P2824] [HEOI2016/TJOI2016]排序 (线段树+二分答案)
题面 传送门:https://www.luogu.org/problemnew/show/P2824 Solution 这题极其巧妙. 首先,如果直接做m次排序,显然会T得起飞. 注意一点:我们只需要 ...
- redhat 7.4从openssh7.6离线升级openssh8.4p1解决方法
具体需求 这几天生产环境服务器又进行了安全扫描,每次都会报一下漏洞错误.虽然只有一个高危问题,但是每次看到ssh远程漏洞都很烧脑 "主要是里面坑太多了",闲话就不说了,今天我们来看 ...