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 ...
随机推荐
- spring boot:使用分布式事务seata(druid 1.1.23 / seata 1.3.0 / mybatis / spring boot 2.3.2)
一,什么是seata? Seata:Simpe Extensible Autonomous Transcaction Architecture, 是阿里中间件开源的分布式事务解决方案. 前身是阿里的F ...
- linux磁盘空间满的处理
Java中运行SQL插入数据时报错: linux磁盘空间满处理: 1.df -h 查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) 2.分别查看输入以下命令 (面对磁盘满了,通过下列命令 ...
- 解决加密PDF文档无法复制文字的问题
有的时候在网络上搜索到一篇心仪的PDF文档,想复制其中内容时提示无法复制. 如果只想摘抄其中部分文字内容,可以使用Firefox浏览器打开这篇加密文档. Firefox浏览器自带PDF插件,打开后即可 ...
- c++ qsort的使用
c++ qsort的使用 qsort函数定义在头文件algorithm中,使用时需要include该头文件 void qsort (void* base, size_t num, size_t siz ...
- springboot入门系列(五):SpringBoot连接多RabbitMQ源
SpringBoot连接多RabbitMQ源 在实际开发中,很多场景需要异步处理,这时就需要用到RabbitMQ,而且随着场景的增多程序可能需要连接多个RabbitMQ.SpringBoot本身提供了 ...
- python坐标获取经纬度或经纬度获取坐标免费模块--geopy
一.官方文档 https://github.com/geopy/geopy 二.模块安装 pip3 install geopy 三.简单实用 from geopy.geocoders import N ...
- LeakCanary检测内存泄漏
内存泄漏原因: 线程造成的内存泄漏 Handler造成的内存泄漏 单例导致内存泄露 静态变量导致内存泄露 非静态内部类导致内存泄露 未取消注册(BroadcastReceiver )或回调导致内存泄露 ...
- jdk1.8特性2
public class User { private Long id; private String userName; private String roleName; private Strin ...
- C 语言编程习惯总结
笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 引言 编程习惯的培养需要的是一个长期的过程,需要不断地总结,积累,并且我们需要从意识上认识其重要性,一个良好的编 ...
- SpringMVC中ModelAndView的两个jar包引起的思考servlet和portlet
在使用ModelAndView时,需要去导包,但是有两个包. 检查前台form表单提交的也正确,后台这也没有问题. 后来发现竟然时导包导错误了. 到此,如果是因为到错包问题,应该就解决了. 但是,深入 ...