python基础(5)-文件操做

文件(file)操做

建立文件html

verse.txt:python

床前明月光
疑是地上霜

open(path(文件路径),mode(模式:r/r+[读],w/w+[写],a/a+[追加])):返回文件句柄(对象)

 1 verse_file = open('verse.txt','r',encoding="utf-8") app

r/r+[读],w/w+[写],a/a+[追加]的区别

mode 可作操做 若文件不存在 是否覆盖
r 只读 报错 -
r+ 读写 报错
w 只写 建立
w+ 读写 建立
a 只写 建立 追加
a+ 读写 建立 追加

readlines():获取全部行,返回list

1 verse_file = open('verse.txt','r',encoding="utf-8")
2 print(verse_file.readlines())
3 verse_file.close()
4 #result:
5     #['床前明月光\n', '疑是地上霜']

read():读取全部字符,返回string

1 verse_file = open('verse.txt','r',encoding="utf-8")
2 print(verse_file.read())
3 verse_file.close()
4 #result:
5     # 床前明月光
6     # 疑是地上霜

遍历文件最优法(懒加载)

verse_file = open('verse.txt','r',encoding="utf-8")
for row in verse_file:
    print(row.strip())
#result:
    # 床前明月光
    # 疑是地上霜

write():写入.当mode为'w'[写]时,会清空以前的内容再写入;当mode为'a'[追加]时,会在原来基础上继续追加写入

1 verse_file = open('verse.txt','w',encoding="utf-8")
2 input_str = '举头望明月\n低头思故乡'
3 verse_file.write(input_str)
4 verse_file.close()
5 """
6 verse.txt:
7     举头望明月
8     低头思故乡
9 """
 1 verse_file = open('verse.txt','a',encoding="utf-8")
 2 input_str = '举头望明月\n低头思故乡'
 3 verse_file.write(input_str)
 4 verse_file.close()
 5 """
 6 verse.txt:
 7     床前明月光
 8     疑是地上霜举头望明月
 9     低头思故乡
10 """

seek(position):定位光标位置

verse_file = open('verse.txt','r',encoding="utf-8")
verse_file.seek(6)#utf-8中一个中文字符占3个字节
print(verse_file.read())
verse_file.close()
"""
 verse.txt:
    明月光
    疑是地上霜
"""

tell():获取光标位置

1 verse_file = open('verse.txt','r',encoding="utf-8")
2 verse_file.seek(6)
3 print(verse_file.tell());#result:6

练习

多级目录文件持久化增删改查

address.dic:编码

{}

file.py:spa

 1 file = open('address.dic', 'r', encoding='utf8')
 2 history_list = []
 3 address_dic = eval(file.read())
 4 while True:
 5     print('---当前地址---')
 6     for current in address_dic:
 7         print(current)
 8     choose = input('请选择---0:返回上一层,1:新增,2:删除,3:修改,4:查询,5:保存退出:')
 9     if choose == '0':
10         if history_list:
11             address_dic = history_list.pop();
12     elif choose == '1':
13         insert_name = input('请输入新增项名称:')
14         if insert_name in address_dic:
15             print('新增失败!该名称项已存在!')
16             continue;
17         else:
18             address_dic[insert_name] = {}
19     elif choose == '2':
20         delete_name = input('请输入删除项名称:')
21         if delete_name not in address_dic:
22             print('删除失败!该名称项不存在!')
23             continue;
24         else:
25             del address_dic[delete_name];
26     elif choose == '3':
27         modify_name = input('请输入修改项名称:')
28         if modify_name not in address_dic:
29             print('修改失败!该名称项不存在!')
30             continue;
31         else:
32             modify_to_name = input('请输入修改后的名称:')
33             modify_value = address_dic[modify_name];
34             address_dic[modify_to_name] = modify_value
35             del address_dic[modify_name]
36     elif choose == '4':
37         select_name = input("请输入查询项名称:")
38         if select_name not in address_dic:
39             print('查询失败!该名称项不存在!')
40             continue;
41         else:
42             history_list.append(address_dic)
43             address_dic = address_dic[select_name]
44             if not address_dic:
45                 print('当前无地址')
46     elif choose == '5':
47         file = open('address.dic', 'w+', encoding='utf8')
48         if history_list:
49             file.write(str(history_list[0]))
50         else:
51             file.write(str(address_dic))
52         file.close();
53         break;
54     else:
55         print("输入错误")

运行结果:3d

address.dic:code

1 {'湖北': {'武汉': {}}, '广东': {'深圳': {}}}

扩展

eval(str):可将对应格式字符串转成相应类型对象.例:

1 dic_str = "{'1':'a','2':'b'}"
2 list_str = "['1','2','3']"
3 dic = eval(dic_str)
4 list = eval(list_str)
5 print(dic,type(dic))
6 print(list,type(list))
7 #result:
8     # {'1': 'a', '2': 'b'} <class 'dict'>
9     # ['1', '2', '3'] <class 'list'>

with:相似C#中Using块,当前块执行完释放对象.下面两块代码等价.

1 with open("test",'r') as file:
2     file.read();
1 file = open("test",'r')
2 file.read()
3 file.close()

编码与解码

推荐博客:http://www.javashuo.com/article/p-etclaczz-ca.htmlhtm

相关文章
相关标签/搜索