'''
文件读写
1-文件
1- Python2 File -- Python3 TextIOWrapper
2- 一定要有file文件路径(路径、文件名、文件格式) 否则
TypeError: Required argument 'file' (pos 1) not found
3- fo = open(fileDir)---只读
4- 路径的写法
1- fileDir = 'G:/pyTest1.txt'
2- fileDir2 = 'G:\\pyTest1.txt'
3- fileDir3 = r'G:\pyTest1.txt'--取消转义
5- 路径
1- 绝对路径--根目录开始的 G:/pyTest1.txt
2- 相对路径 ./当前位置 ../ 上一级
6- 读模式
0- 如果该文件不存在会报错!
1- fo = open(fileDir,'r') === fo = open(fileDir)
2- fo.tell()---从0开始
3- fo.read(2)----读2个字符
4- fo.read()--读全部内容
5- 文件中的换行是2个长度 \n ‘a\nb’---字符串中是一个
6- fo.close()--关闭文件
7- 移动文件指针位置: seek()
1- 0模式---绝对位置模式 fo.seek(1,0)
前提:python3 一定在'rb'模式下---二进制模式--非文本文件(图片)
2- 1模式---当前位置开始移动 fo.seek(移动的位数,模式1)
移动的位数 正数:向后移 负数:向前移
3- 2模式---从尾部
1- fo.seek(-1,2)
2- 移动的位数 正数:向后移 负数:向前移
案例:
fileDir = 'G:/pyTest1.txt'
fo = open(fileDir,'rb')
print('读前',fo.tell())
print(fo.read(2))
print('读后',fo.tell())
fo.seek(2,2)
print('移动后',fo.tell())
8- readline读取一行
1- 该方法返回是 print(type(fo.readline()))-- <class 'str'>
2- 文件指针会做相应的偏移
9- readlines读取所有行
1- 该方法返回是 print(type(fo.readlines()))-- <class 'list'>
区别:
1- fo.read()----返回str
2- fo.readlines()---返回是list---每一行是里面一个元素!
2- fo.read().splitlines()---返回list 而且去掉换行符
7- 文件写模式:
1- fo = open(fileDir,'w')
2- 如果该路径下的文件存在---会清空!
3- 如果该路径下的文件不存在---会新建!
4- 在pycharm里面,你执行了fo.write('123')--可以直接写进去
5- fo.write('123')--返回值---写的字符长度
6- fo.flush() 强行写入文件
7- fo.close() 关闭文件会强行写入文件
8- 追加模式 a
1- 只是为了在文件末尾追加内容而打开文件
9- With open 方式
1- with open(fileDir) as rFile:----rF = open(fileDir)
2- 可以省略fo.close()
3- 操作多个文件
'''
'''
seek:
1- (1,模式)---0模式----绝对位置,从0开始---配套 ‘r’
处理:文本文件---txt、log ----返回--str
2- (1,模式)---1模式----当前位置,开始
文件打开的模式一定是 rb--- 读二进制(bin)---.pcap格式文件用rb模式打开
3- (1,模式)---2模式----尾部位置,开始---rb--- 读二进制(bin)
windows --文件里面的换行--\r\n 2个长度 '\n'---一个 linux-一个
'''
# fileDir = 'G:/pyTest1.txt'
# fileDir2 = 'G:\\pyTest1.txt'
# fileDir3 = r'G:\pyTest1.txt'#取消转义 r
# fo=open(fileDir3,'r')#file object
# # print(fo)
# # print('当前文件指针位置: ',fo.tell())
# # print(fo.read(2))#r 模式 返回值 str
# # print('当前文件指针位置: ',fo.tell())
# # fo.seek(-1,1)#0 模式---默认0模式
#
# # print(fo.readline())#读一行
#
# # print(fo.readlines())#返回什么类型---list
# # for one in fo.readlines():
# # print(one.replace('\n',''))
# # print(type(fo.read()))
# print(fo.read().splitlines())#去换行符---list
# print('当前文件指针位置: ',fo.tell())
#
# fo.close()#关闭
fileDir3 = r'G:\pyTest1.txt'#取消转义 r
fo=open(fileDir3,'r+')#file object
fo.write('ABC')#里面写字符串 只是写到内存里面,并不是写到磁盘里
fo.flush()#刷新写入
fo.close()#关闭
with open(fileDir3) as fo,open('','w') as fo2:#可以操作多个文件 2、可以省略close()
print(fo.read())
fo2.write('')
print('over')
'''
算法
1-嵌套循环
2-列表生成式:
1-aftertax=[one*0.9 for one in beforetax]
2-aftertax=[循环体 for语句]
3-alist.sort(默认正序) alist.sort(reverse=True)
4-冒泡排序:
1-确认要排序的对象:alist--升序 / 降序
2-思维分解:
1-每一次找一个最大值
1- 找7 -对比 len -1
1- [3,1,7,0]
2- [1,3,7,0]
3- [1,3,0,7]
2- 找3 对比 len -2 2次
1- [1,3,0,7]
2- [1,0,3,7]
3- 找1 对比 1次
1- [1,0,3,7]
2- [0,1,3,7]
alist = [3,1,7,0]
for i in range(0,len(alist)-1):# 0 1 2 左含右不含!!!---找最大值的次数
for j in range(0 , len(alist)-i-1):#对比次数
if alist[j] > alist[j+1]:
alist[j],alist[j+1] = alist[j+1],alist[j]
print(alist)
5-思维扩展
1- alist = [3,1,7,0]
2- 每一次找一个最小值 不使用---min()------假设法
3- data = [] ------ data.append(最小值)
** 每一次找到 最小值要记得删除!
a ,b = 3,4
'''
'''
核心思路:
1- 每一次找一个较大值
2- 相邻元素比较!
1- 找3次较大值---最一个不就是最小值
2- 过程:
1- 找第1个较大值---8---交换了3次
1- [8,2,6,0] ---- 8 和 2 比较 -- 8大- 交换位置--[2,8,6,0]
2- [2,8,6,0] ---- 8 和 6 比较 -- 8大- 交换位置--[2,6,8,0]
3- [2,6,8,0] ---- 8 和 0 比较 -- 8大- 交换位置--[2,6,0,8]
2- 找第2个较大值---6---交换了2次
1- [2,6,0,8] ---- 2 和 6 比较 -- 6大- 交换位置--[2,6,0,8]
2- [2,6,0,8] ---- 6 和 0 比较 -- 6大- 交换位置--[2,0,6,8]
3- 找第3个较大值---2---交换了1次
1- [2,0,6,8] ---- 2 和 0 比较 -- 2大- 交换位置--[0,2,6,8]
'''
# boys = ['Mike','Jack','Tom']
# girls = ['Lisa','Linda','Mary']
#
# for girl in girls:
# for boy in boys:
# print(girl ,boy)
# for i in range(1,10):#行
# for j in range(1,i+1):
# print('{}x{}={}'.format(j,i,i*j),end='\t')
# print()#换行
#
# beforetax=[10000,15000,8000,4000,5000]
# aftertax=[]
# for one in beforetax:
# aftertax.append(one*0.9)
#
#
#
# aftertax=[one*0.9 for one in beforetax]#缩写
#
# print(aftertax)
# alist = [8,2,6,0] #0 2 6 8
# #1- 找n-1次较大值
# #2- 相邻元素比较
#
# #1- 找几次较大值 n-1
# for i in range(0,len(alist)-1):#8 -- 0 #次数 6 ----1
# #2- 对比交换
# for j in range(0,len(alist)-1-i):#次数
# if alist[j] > alist[j+1]:
# alist[j],alist[j+1] = alist[j+1],alist[j]
#
# print(alist)
#
# a = 1
# b = 2
# print(a,b)
# a,b=b,a
# print(a,b)
# 只要非零数值 非空字符串、非空列表。非空元组 都位True
if ' ':
print('条件满足')
# alist.sort(reverse=False)
# # alist.reverse()#倒序
# print(alist)