欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 学习day4

程序员文章站 2022-07-14 17:28:44
...
list_1 = [1,4,8,7,8,5,4,3]
list_2 = [2,4,9,7]
list_3 = [1,4]
list_4 = [7,8]
print(list_1)

# 集合可以列表去重
list_1 = set(list_1) #集合是无序的
print(list_1,'\n',type(list_1))

list_2 = set(list_2)
# 取两个列表交集
print(list_1.intersection(list_2))
print(list_1 & list_2)

# 取两个列表并集
print(list_1.union(list_2))
print(list_1 | list_2)

# 取差集
print(list_1.difference(list_2))
print(list_1 - list_2)

# 子集
list_3 = set(list_3)
print(list_3.issubset(list_1),list_3.issubset(list_2))
print(list_3 <= list_1,list_3 <= list_2)

# 父集
print(list_1.issuperset(list_3),list_2.issuperset(list_3))
print(list_1 >= list_3,list_2 >= list_3)

# 对称差集 在A中或者B中,但是不同时在两者中
print(list_1.symmetric_difference(list_2))
print(list_1 ^ list_2)

# 判断是否有交集
list_4 = set(list_4)
print(list_2.isdisjoint(list_4))
print(list_3.isdisjoint(list_4))

# 添加
list_4.add(999)  #添加一项
print(list_4)
list_4.update([20,30,40]) #添加多项
print(list_4)

# 删除
list_4.remove(999) # 没有返回值
print(list_4)
list_4.discard(8) #没有返回值,若没有该元素则什么都不做
x = list_4.pop() # 有返回值
print(x)

# 求长度
print(len(list_4))

# 判断是否在集合中
print(999 in list_4)
print(999 not in list_4)

# 复制(浅)
list_5 = list_4.copy()
print(list_5)
# r'C:\Users\Dell\Desktop\xxxx.txt'  #反斜杠在Python中被视为转义标记,
# 所以在绝对路径前加上r,确保为原始字符串

f = open("yesterday",encoding= "utf-8")  #文件句柄

# f.write("\ndsdddd")
# print(f.read(10))

# .read() 从文件中读取size个字节,当未给定或给定负值的时候,读取剩余所有字节。
# 文件句柄是按行相继下去,假设第一个循环读取到第五行,
# 再下一个循环并不是从第一行开始,而是第六行。读取到末尾就停止,不会重头开始。

# 读取每一行 .read()函数只适合小文件,大文件非常浪费时间,甚至内存不够用
for line in range(5):  # 方法一 可以指定到第多少行
    print(f.readline().strip())

for line in f.readlines():   #方法二 全文读取 .readlines()将文件转化成列表形式
    print(line.strip(),"-------")

for index,line in enumerate(f.readlines()):
    if index >= 5:
        break
    print(line.strip())

f.close()

print("------------分割线---------")

f = open("yesterday",encoding= "utf-8")  #文件句柄
#建议使用下面这种循环
count = 0
for line in f:
    if count == 5:
        print("跳过去这一行")
        count+=1
        continue
    print(line.strip())
    count+=1

f.close()

f = open("yesterday",'r+',encoding= "utf-8")  #文件句柄
print(f.tell())  #f.tell()按字符计数,显示光标位置
print(f.readline().strip())
print(f.tell())
f.seek(50)  #使光标回到x的位置
print(f.tell())
print(f.name)  #打印文件名
f.flush()
# flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
# 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
# 进度条示例:
# import sys,time
# for i in range(30): #进度条类型
#     sys.stdout.write("*")
#     sys.stdout.flush()
#     time.sleep(0.5)
f.truncate()
# 截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。
# 如果没有指定 size,则从当前位置起截断;截断位置之后的所有字符被删除。
f.close()

# 为了保证无论是否出错都能正确地关闭文件,我们可以使用 try ... finally 来实现:
# try:
#     f = open('yesterday','r')
#     print(f.read())
# finally:
#     if f:
#         f.close()
# 但是每次都这么写实在太繁琐,所以,Python 引入了 with 语句来自动帮我们调用 close() 方法:
# with open('yesterday','r') as f:  建议使用这种方式
#     print(f.read())


# r,以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
# w,打开文件只用于写入。如果该文件已存在则打开文件,且原有内容会被删除。如果该文件不存在,创建新文件。
# a,打开文件用于追加。如果该文件已存在,文件指针将指向文件结尾。新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
# +  打开文件进行更新(可读可写)。
# r+ 打开文件用于读写。文件指针将会放在文件的开头。
# w+ 打开文件用于写读。如果该文件已存在则打开文件,且原有内容会被删除。如果该文件不存在,创建新文件。
# a+ 打开文件用于读写。如果该文件已存在,文件指针将指向文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
# b, 表示处理二进制文件
# rb  wb  ab  等等一系列

 

import os     #导入模块
f_old = open("yesterday",'r',encoding= "utf-8")  #文件句柄
f_new = open("yesterday2",'w',encoding= "utf-8")  #文件句柄

old_str = "肆意的快乐"
new_str = "----------"
count = 0  #统计修改的次数
for line in f_old:
    if old_str in line:
        newline = line.replace(old_str,new_str)
        count +=1
    else:
        newline = line
    f_new.write(newline)   #写入修改后的文件
f_old.close()
f_new.close()

os.replace('yesterday2','yesterday')  #文件内容替换
os.rename('yesterday','new_yesterday')  #文件重命名
print('修改次数',count)
文件内容:
Somehow, it seems the love I knew was always the most destructive kind
不知为何,我经历的爱情总是最具毁灭性的的那种
Yesterday when I was young
昨日当我年少轻狂
The taste of life was sweet
生命的滋味是甜的
As rain upon my tongue
就如舌尖上的雨露
I teased at life as if it were a foolish game
我戏弄生命 视其为愚蠢的游戏
The way the evening breeze
就如夜晚的微风
May tease the candle flame
逗弄蜡烛的火苗
The thousand dreams I dreamed
我曾千万次梦见
The splendid things I planned
那些我计划的绚丽蓝图
I always built to last on weak and shifting sand
但我总是将之建筑在易逝的流沙上
I lived by night and shunned the naked light of day
我夜夜笙歌 逃避白昼赤裸的阳光
And only now I see how the time ran away
事到如今我才看清岁月是如何匆匆流逝
Yesterday when I was young
昨日当我年少轻狂
So many lovely songs were waiting to be sung
有那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
I ran so fast that time and youth at last ran out
我飞快地奔走 最终时光与青春消逝殆尽
I never stopped to think what life was all about
我从未停下脚步去思考生命的意义
And every conversation that I can now recall
如今回想起的所有对话
Concerned itself with me and nothing else at all
除了和我相关的 什么都记不得了
The game of love I played with arrogance and pride
我用自负和傲慢玩着爱情的游戏
And every flame I lit too quickly, quickly died
所有我点燃的火焰都熄灭得太快
The friends I made all somehow seemed to slip away
所有我交的朋友似乎都不知不觉地离开了
And only now I'm left alone to end the play, yeah
只剩我一个人在台上来结束这场闹剧
Oh, yesterday when I was young
噢 昨日当我年少轻狂
So many, many songs were waiting to be sung
有那么那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
There are so many songs in me that won't be sung
我有太多歌曲永远不会被唱起
I feel the bitter taste of tears upon my tongue
我尝到了舌尖泪水的苦涩滋味
The time has come for me to pay for yesterday
终于到了付出代价的时间 为了昨日
When I was young
当我年少轻狂