python15-day03 文件的基本操作

1. 字典

1.1 字典的定义

字典是key-value结构

key的定义规则:

1. 必须是不可变的,数字、字符串、元组是不可变的,列表和字典中的元素是可变的,可hash的类型可以作为字典的key,不可hash的不可以作为字典key值。

dic1 = {1:"liangkai"}
dic2 = {"name":"liangkai"}
dic3 = {(1,2,3):"liangkai"}
print(dic1.get(1))
print(dic2.get("name"))
print(dic3.get((1,2,3)))

key值可以是数字、字符串、元组,取值时,key是什么形式就取什么形式。

2. 唯一性

key值是唯一的,如果一个字典有多个key值,执行程序不会报错,但是取值时只会返回一个value值。

value的定义规则:

1. 可以是任意类型数据

1.2 字典的操作

1.2.1 增删改查

#字典定义方法

dic = {
    ‘name‘:‘liangkai‘,
    ‘age‘:‘26‘
    }
dic1 = dict(‘name‘,"liangkai")
print(dic1)
dic2 = dict((‘name‘,‘liangkai‘),("age","18"))
print(dic2)

#增,字典是无序的,key值是唯一的

dic["genger"] = ‘female‘
print(dic)

#

del  dic["name"]
print(dic)

#,key值是无法更改的

dic[‘name‘] = ‘kaige‘
print(dic)

#查,可以使用中括号的方法,或者get方法,get方法不会出现报错,如果没有key,会返回none

print(dic[‘name‘])
print(dic.get(‘name‘))

1.2.2 字典内置方法

#快速生成字典,同一个value值,不同的key,这样的key值指向同一块内存地址,一个改全改

dic1 = dict.fromkeys(["liangkai","kaige"],1)
print(dic1)

#将每一项改成元组,以列表的形式输出

print(dic1.items())
for k,v in dic1.items():
    prin(k,v)

#把所有的key以列表的形式输出,可以循环key值,打印value

print(dic1.keys())
for i in dic1.keys():
    print(i,dic1[i])

#把所有的value值以列表的形式输出

for i in dic1.values():
    print(i)

#删除某个key-value对,key值必须存在,否则删除报错

#dic1.pop()

#随机删除某个键值对

dic1.popitem()
#插入一个键值对
dic1.setdefault("sex","fomale")
print(dic1)
dic1.setdefault("name",[]).append(‘kaige‘)
print(dic1)

#两个字典的更新,结合,存在则更新,不存在则创建

dic1.update()
dic1.update(name= "kai")
print(dic1)

#复制,浅copy,只能copy第一层

dic1.copy()

#深copy,导入copy模块

dic3 = copy.deepcopy(dic1)
print(dic3)

1.3 三级菜单

1.3.1 简单逻辑版

# _*_ coding:utf-8 _*_
# Author :kaige
menu = {
    ‘北京‘:{
        ‘海淀‘:{
            ‘五道口‘:{
                ‘soho‘:{},
                ‘网易‘:{},
                ‘google‘:{}
            },
            ‘中关村‘:{
                ‘爱奇艺‘:{},
                ‘汽车之家‘:{},
                ‘youku‘:{},
            },
            ‘上地‘:{
                ‘百度‘:{},
            },
        },
        ‘昌平‘:{
            ‘沙河‘:{
                ‘老男孩‘:{},
                ‘北航‘:{},
            },
            ‘天通苑‘:{},
            ‘回龙观‘:{},
        },
        ‘朝阳‘:{},
        ‘东城‘:{},
    },
    ‘上海‘:{
        ‘闵行‘:{
            "人民广场":{
                ‘炸鸡店‘:{}
            }
        },
        ‘闸北‘:{
            ‘火车战‘:{
                ‘携程‘:{}
            }
        },
        ‘浦东‘:{},
    },
    ‘山东‘:{},
}
while True:
    for n in menu:
        print(n)
    name_level1 = input("请输入一级城市名称:")
    if name_level1 == "quit":
        exit()
    elif name_level1 == "b":
        break
    elif name_level1 not in menu :
        print("输入不存在,请重新输入")
        continue
    else:
        while True:
            for n in menu[name_level1]:
                print(n)
            name_level2 = input("请输入二级城市名称:")
            if name_level2 == "quit":
                exit()
            elif name_level2 == "b":
                break
            elif name_level2 not in menu[name_level1] :
                print("输入不存在,请重新输入")
                continue
            else:
                while True:
                    for n in menu[name_level1][name_level2]:
                        print(n)
                    name_level3 = input("请输入三级城市名称:")
                    if name_level3 == "q":
                        exit()
                    elif name_level3 == "b":
                        break
                    elif name_level3 in menu[name_level1][name_level2]:
                        for n in  menu[name_level1][name_level2][name_level3]:
                            print(n)
                    else:
                        print("输入不存在,请重新输入")
                        continue
                    while True:
                        choice = input("请选择操作,b返回上一级,q退出")
                        if choice == "q":
                            exit()
                        elif choice == "b":
                            break
                        else:
                            print("输入错误,请重新输入")
                            continue

1.3.2 优化版

# _*_ coding:utf-8 _*_
# Author :kaige
menu = {
    ‘北京‘:{
        ‘海淀‘:{
            ‘五道口‘:{
                ‘soho‘:{},
                ‘网易‘:{},
                ‘google‘:{}
            },
            ‘中关村‘:{
                ‘爱奇艺‘:{},
                ‘汽车之家‘:{},
                ‘youku‘:{},
            },
            ‘上地‘:{
                ‘百度‘:{},
            },
        },
        ‘昌平‘:{
            ‘沙河‘:{
                ‘老男孩‘:{},
                ‘北航‘:{},
            },
            ‘天通苑‘:{},
            ‘回龙观‘:{},
        },
        ‘朝阳‘:{},
        ‘东城‘:{},
    },
    ‘上海‘:{
        ‘闵行‘:{
            "人民广场":{
                ‘炸鸡店‘:{}
            }
        },
        ‘闸北‘:{
            ‘火车战‘:{
                ‘携程‘:{}
            }
        },
        ‘浦东‘:{},
    },
    ‘山东‘:{},
}

last_level = []
menu_choice = menu
while True:
    for key in  menu_choice: print(key)
    choice = input(">>>>:")
    if choice == "b":
        if len(last_level) == 0: break
        menu_choice = last_level[-1]
        last_level.pop()
    elif choice == "q": exit("退出成功")
    elif choice not in menu_choice:
        print("输入不存在,请重新输入")
        continue
    else:
        last_level.append(menu_choice)
        menu_choice = menu_choice[choice]

2. 集合

定义:有不同元素组成的集合

2.1 基本操作

set1 = {1,2,5,7,8,4,10}
set2 = {2,4,6,8,10}
set3 = {6,8}
#交集
print(set1.intersection(set2))
#并集
print(set1.union(set2))
#差集
print(set1.difference(set2))
print(set2.difference(set1))
#对称差集
print(set1.symmetric_difference(set2))
print(set2.symmetric_difference(set1))
#子集
print(set3.issubset(set2))
#父集
print(set2.issuperset(set3))

去掉交集部分,剩下的元素

2.2 集合内置方法

s1 ={1,2,3,4}
s2 = {"a","b","c",2,4}
#更新
s1.update(s2)
print(s1)
#增加
s1.add("hello")
print(s1)
#随机删除
print(s1.pop())
print(s1)
#指定删除,如果元素不存在,返回错误
s1.remove("hello")
print(s1)
#第二种删除方法,如果元素不存在不返回错误
s1.discard("a")
print(s1)

3. 字符编码

1. 内存固定使用unicode编码,硬盘的编码(即可以修改的软件编码)

2. 使用什么编码往硬盘存,就用什么编码去读。

3. 程序运行分两个阶段:

  • 从硬盘读取到内存
  • python解释器运行读到内存的代码

4. 针对一个test.py来说,pycharm与nodepad++的区别是多了3中的第二步。

5. 代码头部的编码只是告诉程序从硬盘读到内存使用什么编码。

4. 文件操作

#读文件,打开文件后需要赋值给一个变量,避免每次都要打开

‘‘‘
f = open("test1")
count = 0
while count<5:
    print(f.readline().strip())
    count += 1
#一行行的读
‘‘‘
‘‘‘
f = open("test1")
line_nu = 0
for line in f:
    if line_nu < 4:
        print(line.strip())
        line_nu +=1
    else:
        break
‘‘‘

#写文件

# w是创建写模式的文件,无论是否存在都会重新创建

# a是追加模式

# r是读模式,默认打开是读模式

# r+ 读写

# w+ 写读,先以写的模式打开,清空文件内容

# a+ 追加读,追加到最后,跟r+效果一样

f = open("myfile","w+")
f.write("你好")
f.write("kaige")
f.close()
#将一个列表的值写到文件中
f.writelines()

#判断文件是否已经关闭,返回布尔类型
f.closed

#打印文件的编码格式
f.encoding

#刷新内存数据到硬盘
f.flush()

#判断是不是tty文件,tty文件是不可读的,很少用
f.isatty()

#判断文件是否可读
f.readable()

#移动指针到特定文件位置(以字符为单位)
f.seek()

#查看文件是否可seek
f.seekable()

#查看当前指针所在位置
f.tell()

#指针位置后边全部截断,可以指定长度截断,删除
f.truncate()
时间: 2024-10-24 00:32:15

python15-day03 文件的基本操作的相关文章

Linux下文件的基本操作

文件的基本操作 新建和删除文件夹 命令#mkdir /file 在当前目录创建file文件夹 命令#rmdir /file 删除当前目录下file文件夹 复制和移动文件 命令#cp text/file.txt /text1/file1.txt  将text目录下file.txt 复制到text1并更名为file1.txt 命令#mv text/file.txt /text1 将text目录下file.txt复制到text1目录下 查看和创建文件 命令#cat text/file.txt 查看te

目录与文件的基本操作一 (44)

解析目录路径 使用PHP脚本可以方便对目录进行操作,如创建目录.遍历目录.复值目录与删除目录等操作.??常用的文件目录路径格式:??$unixPath="/var/www/html/index.php";//在UNIX系统中的绝对路径,必须使用"/"分隔??$winPath="C:\\Appserv\\www\\index.php";//在Windows系统的绝对路径,默认使用"\"分隔??$winPath2="C:

Windows PowerShell--目录文件的基本操作

Windows PowerShell(一) 目录与文件的基本操作 你可以通过一些命令浏览系统里的目录,创建,移动,删除目录还有文件.目录与文件的操作是使用命令行工具的基础.Windows 用户打开 Powershell ,然后试一下接下来的这些命令. (1)查看你当前的位置  pwd Powershell,还有 终端,在光标的左边默认会显示你当前所在的目录.你也可以使用 pwd ( print working directory )这个命令,查看自己当前所在的位置. C:\Users\Admin

Andriod文件的基本操作(转)

1. 文件的基本操作 File类的相关技巧和操作:文件的创建.重命名和删除,文件夹的创建和删除等操作. 1 package control; 2 3 import java.io.File; 4 5 public class FileUtil { 6     public static final String FILE_NAME = "myfile.txt"; 7     public static final String FOlDER_NAME = "NewFolder

iOS 开发之 - Plist文件的基本操作

plist文件是一个轻量级的数据库,用于存放一些比较小的数据.下面是对plist的基本操作. 新建一个Plist文件 我这里是新建的一个以整体为Array,item是字典的plist文件. 如图: 一般开发中,如果是要操作plist文件的话.都是要把plist文件放到沙盒(Document) 目录下的 先得到资源目录: //得到资源目录(新建的plist文件) - (NSString *)getDataSourcePath:(NSString *) sourceName andType:(NSS

解码,编码,文件的基本操作

5.10自我总结 1.编码解码 1.字符串编码 字符 -------->翻译过程 ------->数字 2.字符串解码 字符 -------->翻译过程 ------->数字 3.编码解码用到的翻译工具 中国:GBK 外国:日本—Shift_JIS,美国ASCII,韩国Euc-kr 国际统一:Unicode进行编写,存取用UTF-8,Unicode与UTF-8为特例他们两个能够相互识别 2.文件的基本操作 1.打开文件 open(r'文件的路径') 默认为只读 完整的路径为绝对路径

HDFS文件的基本操作

HDFS文件的基本操作: package wjn; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; im

python之文件的基本操作

#encoding=utf-8 #author:zhouyu os这个模块是用来对系统文件的一些基本操作的,比较创建文件,修改文件以及删除文件. 一般来说,如果你想获取这个文件的内容或者你想修改文件的信息,就必须要先打开文件. import os   #导入os模块 test_file = 'C:\\test.txt' opentest = open(test_file,'r')  #以只读的形式打开文件 read_test = opentest.read()   #把文件内容储存在opente

python学习---文件的基本操作

对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读, 在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open frist_line = f.readline()#获取文件的第一行内容,返回的是一个list print(frist_line)#打印

文件的基本操作二与文件的上传和下载 (45)

访问远程文件 ??如果需要访问远程文件,必须在PHP的配置文件中激活“allow_url_fopen”选项,才能使用fopen( )函数打开运程文件.而且还要确定其他服务器中的文件是否访问权限,如果使用PHP协议对远程文件进行链接,只能以“只读”模式打开.如果需要访问的远程FTP服务器中,对所提供的用户开启了“可写”权限,则使用FTP协议链接远程的文件时,就可以使用“只写”或“只读”模式打开文件.但不可以使用“可读可写”的模式.??使用PHP访问远程文件就像访问本地文件一样,都是使用相同的读写函