关于python中虚拟环境的搭建和操作文件

这一章主要说的是怎样创建虚拟环境,怎样在python使用虚拟环境,和一些在做操作文件是引出的问题

一、创建虚拟环境

创建虚拟环境有2中方法:

一种是在命令行输入python -m venv 虚拟环境名称

第二种是在命令行输入mkvirtualenv 虚拟环境名称

查看虚拟环境:workon

二、在python中设置环境

的文件夹,选择python.exe就把python中的环境设置好,然后我们在下载我们需要的模块就好了

1.打开pychamy点击下图中的Settings(设置)

2.找到Project:py  > Python interpreter在点击Add interpreter

3.点击existing在去点击三点

 

 4.在找到我们安装虚拟环境的文件夹就可以了

三、文件操作

在 Python 中使用文件的关键函数是 open() 函数。

open() 函数有两个参数:文件名和模式。

有三种打开文件的不同方法:

r: 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。

a:追加 - 打开供追加的文件,如果不存在则创建该文件。

w:写入 - 打开文件进行写入,如果文件不存在则创建该文件。

其中使用with open语句进行文件操作是一种推荐的做法

因为它有几个优点:
1.自动关闭文件: 使用with open语句可以确保在操作结束后自动关闭文件。在代码块执行完毕后,无论是正常执行还是发生异常,文件都会被正确关闭。这样可以避免因为忘记关闭文件而导致资源泄漏的问题。
2.简洁和优雅: with open语句的语法简洁明了,使得代码更加清晰和易读。它可以将文件操作的相关代码块封装在一个作用域内,提高了代码的可维护性。
总之,使用 with open 语句是一种推荐的做法,可以确保文件操作的安全性和简洁性。

实例:

f = open("demofile.txt", "r")
print(f.read())
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()

# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()

# 写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())

四、递归

1、什么是递归

递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单地说一个是递的过程,一个是归的过程。

2、递归的使用场景

1.大问题可以拆分为多个子问题。

2.原问题和拆分后的子问题除了数据规模不同,解决思路完全相同。

3.存在递归终止条件。

递归在线性数据结构中使用不太明显,迭代基本可以很容易地解决问题。

3、递归的写法条件

递归必须具备两个条件,

一是有边界,即终止条件。

二是需要调用自己。

这两个条件缺一不可,并且其中终止条件语句必须在递归调用语句之前。如果顺序颠倒则递归函数会进入死循环,永远退不出来,会出现堆栈溢出异常。

在递归函数中,终止条件可以不止一个,递归调用也可以通过一些逻辑语句分成好几个。

五、隐式递归

Python是一门非常灵活的编程语言,在编写程序时,隐式递归是其中一个非常重要的概念。隐式递归指的是在程序中使用函数调用的方式来实现递归的过程,而不是通过明确的递归函数来实现。

在隐式递归中函数或方法通过不断迭代自身来实现递归的调用,不显示地使用递归关键字和语句。避免了递归调用带来函数调用开销空间的使用,使算法更加高效。

六、python中的内存

在Python中,内存是用于存储程序执行期间的数据和对象的地方。Python使用自动内存管理机制,即垃圾回收器来管理内存。

分为两种

1.栈:栈是用于存储局部变量、函数调用过程中的参数、返回地址等信息的一块内存区域。栈中的数据是按照后进先出(LIFO)的顺序进行操作的。

2.堆:堆是用于存储动态分配的对象和数据结构的一块内存区域。堆中的数据是通过使用引用计数器来进行管理和回收的。当一个对象没有任何引用时,垃圾回收器会自动将其回收释放内存。

需要注意的是,在处理大量数据或者性能要求较高的场景下,合理地管理和优化内存的使用是很重要的。可以采用一些技巧,如使用生成器、避免循环引用等来减少内存的占用。

七、冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,依次比较相邻的两个元素,如果它们的顺序不对,则交换它们,直到整个列表有序。该算法的核心思想是通过不断地交换相邻的元素,将较大(或较小)的元素逐渐"冒泡"到列表的一端。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

八、文件的读写指针

读写指针是用来维护对文件操作的当前位置

文件的第一个字符位置在0,最后结尾标志位EOF

文件读写指针在操作时时共用的,也及时读取操作之后,写入操作会继续在读操作之后位置

# tell方法可以查看当前读写指针的位置

# seek(offset[,whence])可以移动当前文件读写指针位置

九、递归函数遍历文件夹和文件详情

def ls(num):
    a = os.listdir(num)
    print(a)
    for i in a:
        b = os.path.join(num, i)
        if os.path.isdir(b):
            print('文件夹:', b)
            ls(b)
        else:
            print('文件:', b)

我使用的是一个函数ls,其中num是我传递的路由参数,os.listdir是获取路由里面的所有文件和文件夹,使用for循环遍历出来,os.path.join是我自己传递过来的路由和循环出来的文件,文件夹进行拼接,就是这个文件完整的路由,os.path.isdir判断是否是文件夹是文件夹就执行if,不是就执行else

十、目录操作:创建和删除目录

os.mkdir(dir):创建目录,要创建的目录的父目录必须存在。

os.makedirs(dir):创建目录,要创建的目录的父目录可不存在。若父目录不存在则创建父目录。

os.rmdir(dir):删除目录,仅对空目录有效。若目录中文件则不能删除。

shutil.rmtree(dir):删除目录,目录可不为空。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值