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. Martyr2项目实现——Number部分的问题求解 (1) Find Pi to Nth Digit

    Martyr2项目实现--Number部分的问题求解 (1) Find Pi to Nth Digit Find Pi to Nth Digit 问题描述: Find PI to the Nth Di ...

  2. centos8平台使用stress做压力测试

    一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...

  3. python去除特殊字符

    去除数字,特殊字符,只保留汉字 ? 1 2 3 4 5 6 7 8 import re    s = '1123*#$ 中abc国' str = re.sub('[a-zA-Z0-9'!"# ...

  4. python保存图片

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

  5. [转]CSS学习笔记

    原文:http://www.fx114.net/qa-266-93710.aspx 01.什么是CSS.    CSS指层叠样式表(Cascading Style Sheets).    ·样式定义如 ...

  6. django—ORM相关

    常用的QuerySet方法 1.all() 查询表中所有数据,返回一个QuerySet对象列表 2.filter() 查询满足条件的数据,返回一个QuerySet对象列表 3.get() 查询指定的数 ...

  7. zctf2016_note2:一个隐蔽的漏洞点挖掘

    代码量挺大的,逆起来有难度 功能挺全,啥都有 main函数 add函数,有heaparray并且无pie保护,考虑unlink show函数,可以泄漏地址用 edit函数,有两种edit方式 dele ...

  8. Linux中文件与目录的区别

    普通文件:存储普通数据,一般就是字符串. 目录文件:存储了一张表,该表就是该目录文件下,所有文件名和索引(inode)的映射关系. 通常父目录会存储有它目录下文件的索引映射,说白了就是一张对应关系的索 ...

  9. Libevent库基础(1)

    1.创建 eevent_base struct event_base *base = event_base_new(); 2.创建 事件event struct event *ev; struct e ...

  10. MongoDB 监控 --- MongoDB基础用法(八)

    MongoDB 监控 在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能.这样在大流量得情况下可以很好的应对并保证MongoDB正常运作. M ...