4.1 读写文件
4.2 文件方法
4.3 python2的乱码问题
4.4 python对passwd文件进行排序
4.1 读写文件
访问 模式 | 说 明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
# 读写文件
if __name__ == '__main__':
fileName = input("输入文件名:")
f = open(fileName, 'w', encoding="utf-8")
while 1:
context = input("context('EOF' will close)")
if context == 'EOF':
f.close()
break
else:
f.write(context)
f.write("\n")
fRead = open(fileName, encoding="utf-8")
readContext = fRead.read()
print("############O###################")
print(readContext)
print("############X###################")
fRead.close()
4.2 文件方法
# G:\PYTHON_Pro\NO_1\Basics\file03\1.txt
ENCODING = "utf-8"
f = open("1.txt", encoding = ENCODING)
# name; 打印文件名
print(f.name)
print("2############")
# readline(); 按行读取
print(f.readline())
print(f.readline())
# readlines(); 以列表方式返回读取内容
print("3############")
print(f.readlines())
# close(); 直接打开文件需要关闭文件
f.close()
# with;这个方式打开文件会自动关闭。read();读取文件所有内容
print("4############")
with open ("1.txt", "r", encoding = ENCODING) as f:
print(f.read())
4.3 python2的乱码问题
python转码的过程
源码编码 -> unicode编码 -> 目的编码
方法一
s.decode("utf-8").encode("gbk")
方法二
- import sys
- reload(sys)
- print(sys.getdefaultencoding())
- sys.setdefaultencoding("utf-8")
- print(sys.getdefaultencoding())
4.4 python对passwd文件进行排序
import codecs
file = ("ps.txt")
sortFile = "sortps.txt"
fileContext = []
sortUid = []
with codecs.open(sortFile, "w") as fsort:
with codecs.open(file, encoding="utf-8") as f:
fileContext += f.readlines()
for line in fileContext:
sortUid.append(int(line.split(":")[2]))
sortUid.sort()
for uid in sortUid:
for line in fileContext:
if str(uid) == line.split(":")[2]:
print(line.strip("\n"))
fsort.write(line.strip("\n"))