day09 深浅拷贝、异常处理、基本文件处理、绝对路径和相对路径

数据类型分类总结
1)按存值个数
存一个值: 整型/浮点型/字符串
存多个值: 列表/字典/元组/集合

2)按有序or无序
有序: 字符串/列表/元祖
无序: 字典/集合

3)按可变or不可变
可变: 列表/字典/集合
不可变: 整型/浮点型/字符串/元组

Python深浅拷贝
1)拷贝(赋值)
lt = [1, 2, 3]
lt2 = lt
lt.append(4)

print(lt) # [1, 2, 3, 4]
print(lt2) # [1, 2, 3, 4]
因为列表是可变类型,所以lt的值变化,lt2的值也会跟着变2)浅拷贝
import copy
lt2没有变化的情况
lt = [1, 2, 3]
lt2 = copy.copy(lt)
lt.append(4)
print(lt) # [1, 2, 3, 4]
print(lt2) # [1, 2, 3]


lt2变化的情况
lt = [1, 2, 3, [4, 5, 6]]
lt2 = copy.copy(lt)
lt.append(4)
print(lt) # [1, 2, 3, [4, 5, 6], 4]
print(lt2) # [1, 2, 3, [4, 5, 6]]

lt[-1].append(7)
print(lt) # [1, 2, 3, [4, 5, 6, 7]]
print(lt2) # [1, 2, 3, [4, 5, 6, 7]]


3)深拷贝
import copy
lt = [1, 2, 3, [4, 5, 6]]
lt2 = copy.deepcopy(lt)

lt.append(4)
print(lt) # [1, 2, 3, [4, 5, 6], 4]
print(lt2) # [1, 2, 3, [4, 5, 6]]
lt[-1].append(7)
print(lt) # [1, 2, 3, [4, 5, 6, 7]]
print(lt2) # [1, 2, 3, [4, 5, 6]]
牢记: 拷贝/浅拷贝/深拷贝 只针对可变数据类型

拷贝: 当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2变化
简单的赋值

浅拷贝:当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2不变化
copy.copy() 可变数据的类型中的内置方法.copy()

深拷贝: 当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变
copy.deepcopy()

毫无应用,面试经常问




异常处理
语法异常(错误都是SyntaxError)
if # SyntaxError
0 = 1 # SyntaxError
逻辑异常(错误类型往往是不一样的)
1/0
dic = {}
print(dic['skldfj']) # KeyError

except:
try: # 尝试
num = input('输入一个值') # 123124
dic = {'0': 'a'}
print(dic[num]) # dic['123124']

print(3) # 代码自上而下,上面会运行
1 / int(num) # 错误不影响其他的代码,报错马上终止try缩进里面的代码
print(4)

except ZeroDivisionError as e: # 除此之外 # try里面的代码出了什么错误,就得用什么错误捕捉 # as是把错误赋值给e
print('e:', e)
except KeyError as e: # 可以写多个except捕捉多个异常
print('e:', e)


exception:
最重要,以后想捕捉异常就用这个,只要记住这个就够用了
print(1)
try: # 尝试
num = input('输入一个值') # 123124
dic = {'0': 'a'}
print(dic[num]) # dic['123124']

print(3) # 代码自上而下,上面会运行
1 / int(num) # 错误不影响其他的代码,报错马上终止try缩进里面的代码
print(4)

except Exception as e: # Exception可以捕捉任意异常,语法错误无法捕捉
print('e:', e)


接下来讲的也是了解部分
finally:
print(1)
try: # 尝试
1 / 1
except Exception as e:
print('e:', e)
finally: # 最终的意思,无论报不报错都会打印 明天讲文件处理的时候带着你用
print(3)

assert: 断言,最早的时候没有pycharm,那这个做调试,一辈子都用不上了

a = 1
a += 1
assert a == 3 # 条件成立会跳过,条件错误会报AssertionError错误
print(3)


raise: 主动抛错,没有用. 创建框架/创建语言 C/C++ 有用

print(1)
raise ZeroDivisionError('主动抛错干嘛')
print(2)


基本文件处理
什么是文件:操作系统提供给用户的一个虚拟单位

文件有什么用: 存储数据

打开文件的流程
1) 找到文件路径
path = r'D:\上海Python11期视频\python11期视频\day 09\test.py' # 鼠标右键点击文件,copy path

2) 双击打开
f = open(path, 'w') # r-->read 只读 ; w-->只写,清空当前文件后写入,自动创建文件
print(f) # 文件数据类型

3) 看文件
data = f.read()
print(data)

4) 写文件.
f.write('nick handsome')

5) 关闭文件
del f # 只删除了文件的引用以及文件在python内存中的占用,但是没有删除对操作系统的占用
f.close() # 会命令操作系统对外存文件的占用


绝对路径和相对路径
绝对路径:这种类型的叫做绝对路径,从根目录(C/D/E盘)开始

path = r'D:\上海Python11期视频\python11期视频\day 09\test.py' # 鼠标右键点击文件,copy path

相对路径:(当前文件夹下,可以直接写文件名)
path = r'test.py'

为什么不能对文件又读又写?
假设文件内容为 1
1. 文件既可以读又可以写

2. 在1后面追加2,文件内容变成12(需要时间10s)

3. 在这10s内读文件(5s),读出来的内容是1

4. 在1后面追加2,文件内容变成12(需要时间10s),等10s过完文件内容其实是12,就会报错

 
 
 

转载于:https://www.cnblogs.com/wwei4332/p/11311337.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 示例代码如下:import schedule import time import osdef open_file(): os.startfile(r"C:\absolute\path\to\file.txt")schedule.every().day.at("10:30").do(open_file)while True: schedule.run_pending() time.sleep(1) ### 回答2: 以下是使用Python编写的定时打开绝对路径文件的示例代码: ```python import os import time def open_file_at_time(file_path, hour, minute): while True: current_time = time.localtime() if current_time.tm_hour == hour and current_time.tm_min == minute: try: os.startfile(file_path) # 使用默认程序打开文件 break except OSError: print("无法打开文件") time.sleep(60) # 每隔60秒检查一次时间 # 示例:在每天的14点30分定时打开文件 file_path = "C:/example/file.txt" hour = 14 minute = 30 open_file_at_time(file_path, hour, minute) ``` 上述代码中,`open_file_at_time` 函数接收三个参数,分别是文件路径`file_path`、小时`hour`和分钟`minute`。函数将持续进行时间的检查,当当前时间与指定的小时和分钟匹配时,将尝试使用默认程序打开文件,否则每隔60秒重新检查一次时间。 在示例代码中,假设需要在每天的14点30分打开路径为`C:/example/file.txt`的文件。可以根据实际需求修改文件路径、小时和分钟来定时打开指定文件。 ### 回答3: 下面是一个使用Python定时打开绝对路径文件的例子代码: ```python import os import time def open_file(file_path): # 检查文件是否存在 if os.path.exists(file_path): # 使用系统默认程序打开文件 os.startfile(file_path) print("成功打开文件:", file_path) else: print("文件不存在:", file_path) def schedule_open_file(file_path, hour, minute): while True: current_time = time.localtime(time.time()) # 检查当前时间是否达到预定的打开时间 if current_time.tm_hour == hour and current_time.tm_min == minute: open_file(file_path) break # 等待1分钟 time.sleep(60) if __name__ == '__main__': file_path = "C:\\path\\to\\file.txt" # 请替换为实际的文件路径 schedule_open_file(file_path, 9, 0) # 每天9:00打开文件 ``` 以上代码首先定义了一个`open_file`函数,用于检查文件是否存在,并通过系统默认程序打开文件。然后定义了一个`schedule_open_file`函数,用于定时打开文件。该函数会循环检查当前时间是否达到预定的打开时间,如果达到则调用`open_file`函数打开文件。如果文件不存在,则会在控制台输出相应信息。 在`main`函数中,我们指定了文件绝对路径`file_path`,并调用`schedule_open_file`函数来设置定时打开文件的时间。以上例子中设置的是每天9点0分打开文件,你可以根据需要自行修改。需要确保文件路径是正确的,并且系统有默认程序关联该文件类型,以便成功打开文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值