首页 > 代码库 > Python自动化开发-day01-Python开发基础2-元组、字典、文件操作

Python自动化开发-day01-Python开发基础2-元组、字典、文件操作

学习内容:

1. 元组操作

2. 字典操作

3. 文件操作

4. 深浅copy

 

1. 元组操作:

元组和列表非常相似,只不过元组不能在原处修改(它是不可变的),并且通常写成圆括号中的一系列项。

# 元组定义(存取方式同列表), 元组只有2个方法:index 和 count
names = ("wills","oscar","tom","jerry")

 

2. 字典操作:

# 字典定义
employees = {
    "s001":"wills",
    "s002":"jerry",
    "s003":"tom"
}
print(employees)

# 增加Key
employees["s004"] = "felicity"
print(employees)

# 修改值
employees["s004"] = "oliver"
print(employees)

# 查找
if "s001" in employees:
    print(employees.get("s001"))

print(employees.get("s001"))

print(employees["s001"])

# 删除
del employees["s002"]
employees.pop("s002")
employees.popitem()       # 随机删除

# 打印key
print(employees.keys())

# 打印values
print(employees.values())

# 打印items,包含k,v
print(employees.items())


# 字典嵌套
names = {
    "wills":{"sex":"female","job":"devOps","hobby":"running"},
    "oscar":{"sex":"male","job":"backenddev","hobby":"smoking"},
    "tom":{"sec":"male","job":"dev","hobby":"travel"}
}
names["oscar"]["hobby"] = "no smoking"
print(names)

# 字典循环遍历
for k,v in employees.items():
    print(k,v)

for key in employees:
    print(key,employees[key])

# 合并(更新了"s001",追加了"s007"
employees2 = {
    "s001":"arrows",
    "s007":"chenergou"
}

employees.update(employees2)
print(employees)

 

3. 文件操作

文件操作的流程:

1. 打开文件,得到文件名柄并赋值给一个变量,

2. 通过句柄对文件进行操作

3. 文件关闭

文件的打开模式:

1. r, 只读模式(默认)

2. w, 只写模式(不可读,不存在则创建,存在则删除内容)

3. a, 追加模式(可读,不存在则创建,存在则只追加内容)

"+" 表示可以同时读写某个文件

1. r+, (可读写文件,可读可写可追加)

2. w+, (写读)

3. a+, (同a)

"U"表示在读取时,可以将\r \n \r\n自动转换成\n (与r 或 r+模式同时使用)

"b"表示处理二进制文件(可以与r w a 同时使用)

# 以写模式打开文件
myfile = open("new.txt","w")

# 写一行文本
myfile.write("hello world!\n")
myfile.write("second line\n")
myfile.write("thrid line\n")
# 关闭文件
myfile.close()

# 以只读模式打开文件
myfile = open("new.txt")

# 一次读取一行
print(myfile.readline())

# 一次读取所有行
print(myfile.readlines())

 

文件修改的两种方式:

1. 一次将文件所有行读入内存变量,然后修改,再写入文件。(缺点是浪费太多内存,不建议)。

2. 一行一行的读取文件,只修改需要修改的行。

# 一行一行的读取文件内容,将thrid改为three
myfile = open("new.txt")
myfile2 = open("new2.txt","w")
for line in myfile:
    if "thrid" in line:
        line = line.replace("thrid","three")
    myfile2.write(line)
myfile.close()
myfile2.close()

 

4. 深浅copy

import copy
# 数字copy,
a = 1
b = a    # b只是copy了a的值,所以个修改a的值不会影响b的值。
a =2
print("a= %d , b= %d" %(a,b))
print("#----------------------------------------------")

# 浅copy: 对于一维列表,copy的是值;对于二维列表,copy的是引用
names = ["stark","spider",["captain1","captain2","captain3"],"flush","runner","vampire"]
names2 = copy.copy(names)   #  第一种浅COPY的方式
# names2 = names[:]         #  第二种浅COPY的方式
# names2 = list(names)      #  第三种浅COPY的方式
names[1] = "Wills.Spider"
names[2][0] = "Captain"
print("浅COPY:")
print("names:",names)
print("names2:",names2)
print("#----------------------------------------------")
# 深copy: 对于一维列表,copy的是值;对于二维列表,copy的也是值。

names = ["stark","spider",["captain1","captain2","captain3"],"flush","runner","vampire"]
names2 = copy.deepcopy(names)
names[1] = "Wills.Spider"
names[2][0] = "Captain"
print("浅深COPY:")
print("names:",names)
print("names2:",names2)
print("#----------------------------------------------")

‘‘‘
p1和p2是夫妻,2人共有100万存款,当p1取走20万时,p2去查询时,会发现余额还有80万
‘‘‘
print("浅COPY的实际应用")
person = ["name",["saving",1000000]]
p1 = person[:]
p2 = person[:]
p1[0] = "Romeo"
p2[0] = "Juliet"
print(p1)
print(p2)
print("p2取款20万")
p2[1][1] = "800000"
print(p1)
print(p2)

 

Python自动化开发-day01-Python开发基础2-元组、字典、文件操作