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文件操作与编解码的更多相关文章

  1. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  2. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  3. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  4. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  5. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  6. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  7. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  8. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

随机推荐

  1. python保存图片

    #coding=utf-8 import requests url ="https://images.pexels.com/photos/1181767/pexels-photo-11817 ...

  2. laravel重写

    laravel location / { try_files $uri $uri/ /index.php?$query_string; } ci location / { try_files $uri ...

  3. 一文秒懂!Python字符串格式化之format方法详解

    format是字符串内嵌的一个方法,用于格式化字符串.以大括号{}来标明被替换的字符串,一定程度上与%目的一致.但在某些方面更加的方便 1.基本用法 1.按照{}的顺序依次匹配括号中的值 s = &q ...

  4. ssh执行命令

    执行一条命令 ssh user@ip command 执行多条命令 ssh user@ip "command1;command2" #分号隔开 关于转义 ssh user@ip ' ...

  5. 接收某项课程id,通过axios发起get请求,由于携带params出现的问题(已解决)

    问题:在最新课程页面(NewBook.vue)点击某一项课程,通过传递该课程的 id 跳转至课程详情页(Bookdetail.vue),采取的跳转方式是声明式导航,即 <router-link  ...

  6. ret2libc--ROP(pwn)漏洞入门分析

    背景知识 fflush 函数,清理缓冲区. fflush(stdout) 一次性输出以上缓冲区所有数据 read(0,&buf,0xAu) 0代表标准输入,标准输出1,标准错误2,&b ...

  7. Linux下更新JDK版本

    date: 2018-11-18 11:04:13 updated: 2018-11-18 11:04:13 1.输入 su 进入管理员权限 2.输入 rpm -qa | grep jdk 查看当前系 ...

  8. BP神经网络算法程序实现鸢尾花(iris)数据集分类

    作者有话说 最近学习了一下BP神经网络,写篇随笔记录一下得到的一些结果和代码,该随笔会比较简略,对一些简单的细节不加以说明. 目录 BP算法简要推导 应用实例 PYTHON代码 BP算法简要推导 该部 ...

  9. U137971 公司搬迁 - 并查集 奇偶性

    题目描述 因为人员规模扩大,T公司准备搬到新的写字楼去,写字楼分为A座和B座,n名不同工号的员工x(p1,p2,p3...pn) 按照下面两个规则确定在A座或者B座进行办公:(1)如果工号为x的员工在 ...

  10. 合适的LoRa网关应该怎么选择

    LoRa网关是什么 LoRa网关有时也被称之为lora基站或者lora集中器,它在lora星形组网中处于核心位置,是数据终端和服务器之间的一个信息桥梁.LoRa网关使用的是不同扩频因子,因为不同的扩频 ...