文件是什么:

变量是把数据保存到内存中,如果程序重启或者主机重启,内存中的数据就会丢失。

要想能让数据被持久化储存,就可以把数据存储到硬盘中,也就是在文件中保存。

电影 mp4

歌曲 mp3

图片 jpg        ==》》数据都是保存在硬盘上的。

文本 txt

表格 xlsx

1,内存  变量,就是在内存中。

2,硬盘 文件,就是在硬盘中。

(1),内存的空间更小,硬盘空间更大。

(2),内存访问更快,硬盘访问更慢。

(3),内存成本更贵,硬盘成本更便宜。

(4),内存的数据容易丢失,硬盘的数据持久化存储。

文件路径:(目录名之间,使用\来分割,使用/也可以)

文件夹,再包含文件夹的情况,

此处把这一层一层的目录构成的字符串,就称为:“文件的路径”

文件路径也可以视为是文件在硬盘上的身份标识,每个文件对应的路径都是唯一的。

打开文件:

后面的'r',是打开方式。

r表示read,按照读方式打开。

w表示write,按照写方式打开。

a表示append,也是写方式打开,把内容写到原有文件内容的末尾。

TextIOWrapper,是python内部给文件对象起的名字。

open的返回值是一个文件对象。

文件的内容,是在硬盘上的,此处的文件对象,则是内存上的一个变量。

后续读写文件操作,都是拿着这个文件对象来进行操作的。

关闭文件:

文件在打开完成后,使用完了之后,也就一定要关闭。

打开文件,其实是在申请一定的系统资源。

不在使用文件的时候,资源就应该及时释放。否则就可能造成文件资源泄露,进一步导致其他的代码无法顺利打开文件。正是一个系统的资源是有限的,因此一个程序能打开的文件个数,也是有上限的。最大打开文件8189

每个程序在启动的时候,都会默认打开三个文件。所以共有8192

1,标准输入(键盘input) 2,标准输入(显示器print) 3,标准错误(显示器)

python有一个重要的机制,垃圾回收机制(GC),自动的把不使用的变量,给进行释放。

写文件:

#使用write来实现写文件的操作。

# f= open('d:/python/text.txt','w')

# f.write('hello')

# f.close()

#写文件的时候,需要使用w的方式打开,如果是r方式打开,则会抛出异常。

#写方式打开,其实又有两种情况,直接写方式打开,追加写方式打开(如果是使用w方式打开,会清空掉文件原有的内容,)

#如果使用的是a方式打开,则不会清空,写的内容会追加在原有文件内容的末尾。

f=open('d:/python/text.txt','w')

f.write('1111\n')

f.close()

f=open('d:/python/text.txt','a')

f.write('2222')

f.close()

#如果文件对象已经被关闭,那么意味着若系统中和该文件相关的内存资源已经释放了,强行去写,就会出异常。

f=open('d:/python/text.txt','w')

f.close()

f.write('000')

读文件:

在读取的时候,中午和英文类似,在计算机中,都是使用“数字”来表示字符的。

哪个数字对应哪个汉字,其实在计算机中,可以有多个版本。

GBK,UTF8,实际开发的时候,就需要保证,文件内容的编码方式和代码中操作文件的编码方式匹配。代码中是尝试gpk来解析。

#1,使用read来读取文件的内容,指定读几个字符。

f=open('d:/python/text.txt','r',encoding='utf8')

result=f.read(8)

print(result)

f.close()

#2,更常见的需求是,按行来读取。

# 最简单的方法,直接for循环。

f=open('d:/python/text.txt','r',encoding='utf8')

for line in f:

print(f'line={line}')

f.close()

之所以多了个空行,是因为本来读到的文件内容(这一行内容,末尾就带有\n)

此处使用print来打印,又会自动加一个换行符。

可以给print再多设定个参数,修改print自动添加换行的行为。

end参数就表示每次打印之后要在末尾加个啥。

默认是\n,修改成“也就是啥也不加”

上下文管理器:

有时候中间的代码里面,有条件判定,函数返回,抛出异常。会影响关闭。

当with对应的代码块(需要缩进)执行结束,就会自动的执行f的close。

库:

python通过模块来体现“库”

1,降低程序猿的学习成本。

2,提高程序猿的开发效率。

库可以分成两个大类:

1,标准库  python自带的库

2,第三方库,其他的大佬做出来的。

代码案例:

日期计算器。

datetime

1,根据日期构造出datetime的变量。

2,把两个变量进行相减,得到的结果即为所求。

#先构造 datetime变量

import datetime

date1=datetime.datetime(2016,2,4)

date2=datetime.datetime(2023,3,5)

print(date2-date1)

如果datetime别扭,则可以这样

#先构造 datetime变量

from datetime import datetime

date1=datetime(2016,2,4)

date2=datetime(2023,3,5)

print(date2-date1)

也可以这样:

#先构造 datetime变量

import datetime as dt

date1=dt.datetime(2016,2,4)

date2=dt.datetime(2023,3,5)

print(date2-date1)

单词逆序的操作:

例如:I am  a student   输出student a am I

在python中,思路是:

1,针对上述字符串,使用空格进行切分,字符串split方法,可以指定分隔符,把字符串分成多个部分,放到一个list里。

2,针对刚才的切分结果列表,进行逆序。

3,再把逆序后的列表,组合起来。(join)

def reverWords(s:str):

#按照' '进行分割。

tokens=s.split(' ')

#将tokens进行逆序。

tokens.reverse()

#以空格分割,加入到tokens中

return ' '.join(tokens)

print(reverWords('I am a student'))

旋转字符串:

给定两个字符串,s和goal,如果若干次旋转操作之后,s能变成goal,那么返回true

例如:s=“abcde”,旋转一次为“bcdea”,再旋转一次为“cdeab”,(把最左侧的字符,给放到最右侧去)

def rotateString(s,goal):

if len(s) != len(goal):

return False

return goal in s+s

print(rotateString('abcde','bcdea'))

统计是给定字符串前缀的字符串数目:

给一个字符串数组,words和一个字符串s,其中word[i]和s只包含小写英文字母。

请你返回words中是字符串s前缀的字符串数目。

遍历words,取出每个字符串。

判定当前这个字符串,是否是s的前缀就行了(s是否以这个字符串开头的)。

例如:words="a,b,c,abc,ab,,bc,ac",s="abc".

def countpPrefixes(words:list,s:str):

count =0

for word in words:

#这是看s是否以words开头

if s.startswith(word):

count+=1

return count

print(countpPrefixes(['a','b','c','abc','ab','bc'],'abc'))

文件查找工具:

#实现文件查找工具

#输入要查找的路径,输入要搜索的文件名(一部分)

#自动的在指定的路径中进行查找

#os.walk只需要使用简单的循环,就可以完成递归遍历的过程,就不必手写代码了

#dirpath :遍历到当前位置,对应的路径是啥。

#dirnames :当前目录下,都有哪些目录,是一个列表,可以包含多个目录名

#filenames :当前目录下,都有哪些文件名,是一个列表,可以包含多个文件名

import os

inputPath=input("请输入要搜索的路径")

pattern=input("请输入要搜索的关键词")

# for dirpath,dirnames,filenames in os.walk(inputPath):

# print(f"dirpath{dirpath}")

# print("dirnames:")

# for name in dirnames:

# print(name)

# print('filenames')

# for name in filenames:

# print(name)

for dirpath,dirnames,filenames in os.walk(inputPath):

for f in filenames:

if pattern in f:

print(f'{dirpath}/{f}')

pip的使用:

使用pip工具,就能直接从pypi上下载你想要的第三方库了。

输入pip,可查看是否安装pip。

二维码生成工具:

二维码本质上,就是一段字符串。

我们可以把任意的字符串,制作成一个二维码。

生活中使用的二维码,更多的是一个URL(网址)

操作excle表:

import xlrd

#1,先打开xlsx的文件。

xlsx=xlrd.open_workbook('d:/python/text.xlsx')

#2,获取到指定的标签页,可以下标,也可以名字

table=xlsx.sheet_by_index(0)

#3,获取到表格中有多少行。

nrows=table.nrows

print(f'nrows={nrows}')

#4,进行循环统计操作

for i in range(1,nrows):

#拿到当前同学的班级id

print('--------------------')

print(table.cell_value(i,0))

print(table.cell_value(i,1))

print(table.cell_value(i,2))

如果求平均值:

import xlrd

#1,先打开xlsx的文件。

xlsx=xlrd.open_workbook('d:/python/text.xlsx')

#2,获取到指定的标签页,可以下标,也可以名字

table=xlsx.sheet_by_index(0)

#3,获取到表格中有多少行。

nrows=table.nrows

print(f'nrows={nrows}')

#4,进行循环统计操作

total=0

count=0

for i in range(1,nrows):

#拿到当前同学的班级id

calssId=table.cell_value(i,1)

if calssId ==100:

total+=table.cell_value(i,2)

count+=1

print(f'平均分:{total/count}')

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: