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 ...
随机推荐
- Nginx禁止html等缓存
+++ date="2020-10-16" title="Nginx禁止html等缓存" tags=["nginx"] categories ...
- 如何获取前端提交来得json格式数据
composer.json { "require": { "guzzlehttp/guzzle": "~6.0" } } composer ...
- linux(centos8):用fallocate快速生成大文件
一,fallocate的用途? 1,用途 我们有时需要用大文件来测试下载速度, 有时需要用大文件来覆盖磁盘空间, 如果在网上搜索,很多文章讲的是使用dd等工具, 事实上linux系统已经内置了生成大文 ...
- Java9系列第7篇:Java.util.Optional优化与增强
我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...
- PyTorch常用参数初始化方法详解
1. 均匀分布 torch.nn.init.uniform_(tensor, a=0, b=1) 从均匀分布U(a, b)中采样,初始化张量. 参数: tensor - 需要填充的张量 a - 均匀分 ...
- Linux命令之{ }花括号
括号扩展:{ } {} 可以实现打印重复字符串的简化形式 [10:04:14 root@C8[ 2020-06-16DIR]#echo file{1,3,5} file1 file3 file5 [1 ...
- MySQL数据库基础-2范式
数据库结构设计 范式 设计数据库的规范 第12345范式,凡是之间有依赖关系. 关系模型的发明者埃德加·科德最早提出这一概念,并于1970 年代初定义了第一范式.第二范式和第三范式的概念 设计关系数据 ...
- log4cplus库的properties文件配置
使用时需要先获取一个Logger的对象,下面获取Logger对象的内容对应于配置: Logger LogConsole = Logger::getInstance(LOG4CPLUS_TEXT(&qu ...
- maven中执行package, install, deploy的区别
package命令完成了项目编译.单元测试.打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库 install命令完成了项目编译.单元测试 ...
- 强网杯web之假的反序列化漏洞
说明 打强网杯的时候一直在写论文, 做林逸师傅的培训题目. 现在得空,还是看了一部分的题目和wp. 源码 源码一共三部分, 这里只写下我知识盲区的一部分,作为自己的记录. <?php highl ...