python基础学习

发布时间 2023-10-14 16:06:48作者: 火煌

python基础学习

一、格式化输出

  1. print
age = '23'
print('my age is', age, sep='')
#, sep=''不带空格 , end=''不换行
  1. 占位符
age = '23'
name = 'liman'
print('my age is %s, my name is %s.'%(age,name))
  1. f-string
i = 12
name = 'liman'
print(f"Hello, {name}.You are {i  + 1:.5f}")

二、列表

列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

list = ['lis',5.6,[3,‘sh’]]

三、字典

字典的每一个键值key=>value对用冒号分隔,每个对之间用逗号分割:

d = {
        key1 : value1,
        key2 : value2,
        'weight' : '150'
    }

四、解压缩

_ :空

*_:多个空格

d = {
        'key1' : 'value1',
        'key2' : 'value2',
        'weight' : '150'
    }
a,*_,b = d;
print(a,b)
#结果key1 weight

s = 'value1'
a,*_,b = s;
print(a, b, sep='')
#结果v1

五、is 和==

is判断地址,==判断值

六、循环

while '''条件''':
	#执行语句
#else: (break结束 不执行)
#tab

for i in '''元组列表字典字符串 range(len(同前))''':
	#执行语句
#else:同上
#tab

循环应用反转字符串

    s = 'slkdeds'    
    l = len(s)
    for index in range(l//2):
        a = s[index]
        s[index] = s[l-index-1]
        s[l-index-1] = a

文件处理

1、打开文件,读写数据
r前缀避免转义字符干扰

f = open(r'/Users/mac/desktop/jupyter/32.txt',mode='w', encoding='utf8')
f.write("""name
de""")#多行字符串
f.close()
f = open(r'/Users/mac/desktop/jupyter/32.txt',mode='r')
data = f.read()

2、python的打开方式

r: read,只读模式,只能读不能写,文件不存在时报错。(r+可写)

f.read()读取文件指针会跑到文件的末端,如果再一次读取,读取的将是空格。(字符串)

readline():读一行

readlines():读全部行返回列表

w: 只能写,不能读,文件存在的时候回清空文件后再写入内容;文件不存在的时候会创建文件后写入内容。

a: 可以追加。文件存在,则在文件的末端写入内容;文件不存在的时候会创建文件后写入内容。

b模式是通用的模式,因为所有的文件在硬盘中都是以二进制的形式存储的,需要注意的是:b模式读写文件,一定不能加上encoding参数,因为二进制无法再编码。

3、with管理文件

with open()方法不仅提供自动释放操作系统占用的方法,并且with open可以使用逗号分隔,一次性打开多个文件,实现文件的快速拷贝。

with open('32.txt','r+', encoding='utf8') as f1,
		open('323.txt','r+', encoding='utf8') as f2:
    

4、文件内的指针移动

1.seek(offset,whence): offset代表文件指针的偏移量,偏移量的单位是字节个数

# seek()
with open('36r.txt', 'rb') as fr:
    print(f"fr.seek(4, 0): {fr.seek(4, 0)}")  # 0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾
    # fr.seek(0,2)  # 切换到文件末尾
fr.seek(4, 0): 3

2.tell(): 每次统计都是从文件开头到当前指针所在位置

# tell()
with open('36r.txt', 'rb') as fr:
    fr.seek(4, 0)
    print(f"fr.tell(): {fr.tell()}")
fr.tell(): 4

3.read(n): 只有在模式下的read(n),n代表的是字符个数,除此之外,其他但凡涉及文件指针的都是字节个数

# read()
with open('36r.txt', 'rt', encoding='utf-8') as fr:
    print(f"fr.read(3): {fr.read(3)}")
fr.read(3): sdf

4.truncate(n): truncate(n)是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate()要在r+或a或a+等模式下测试效果。它的参照物永远是文件头。并且truncate()不加参数,相当于清空文件。

# truncate()
with open('36r.txt', 'ab') as fr:
    fr.truncate(2) # 截断2个字节后的所有字符,如果3个字节一个字符,只能截断2/3个字符,还会遗留1/3个字符,会造成乱码

5、文件修改

1.一次性修改

2.一行一行修改

都是删了旧文件,新文件改名

import os

with open('37r.txt') as fr,\
        open('37r_swap.txt', 'w') as fw:
    # 循环读取文件内容,逐行修改
    for line in fr:
        line = line.replace('jason', 'jasonSB')
        # 新文件写入原文件修改后内容
        fw.write(line)

os.remove('37r.txt')
os.rename('37r_swap.txt', '37r.txt')
print('done...')