前言

  本次内容主要介绍文件处理open函数以及路径处理。

一、open函数

  根据前面介绍的函数调用方式,调用open函数。

#open函数调用
open() TypeError: open() missing required argument 'file' (pos 1)

  我们发现报错了TypeError,缺少一个位置参数file。open函数是python的一个内置函数,查看源码,我们可以看到open函数有7个参数,包括1个位置参数file和6个默认参数。

def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):

  创建一个名称为“open函数.txt"的文件,再次调用open函数。

法外狂徒张三
王二狗
今天星期日
open('open函数.txt')

Process finished with exit code 0

  调用成功,但是文件未打印内容,那么该如何获取”open函数.txt“的内容呢?

1、文件读取

  根据前面所介绍的,函数有返回值,那我们试着直接通过返回值打印出来。

#open函数调用
f= open('open函数.txt')
print(f) <_io.TextIOWrapper name='open函数.txt' mode='r' encoding='cp936'> Process finished with exit code 0

不难看出,打印出的内容是一个io的文件对象,后面我们可以通过”对象.方法"的形式调用函数。

read():读取文件内容。读取的结果是字符串

#open函数调用
f= open('open函数.txt')
f.read()

#报错

 Traceback (most recent call last):
  File "E:\python_workspaces\python基础语法\文件和路径处理\open函数.py", line 3, in <module>
  f.read()

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 4: illegal multibyte sequence

Process finished with exit code 1

如上所述,这里报错了,UnicodeDecodeError,文件编码错误,现在我们调整open函数传参的编码方式为utf8,并再次调用

#open函数调用
f= open('open函数.txt',encoding="utf8")
cont = f.read()
print(cont)

#运行结果

  法外狂徒张三
  王二狗
  今天星期日

 

readline():读取文件内容,只读取一行内容。

#open函数调用
f= open('open函数.txt',encoding="utf8")
content = f.read()
print(content) #readline()
cont=f.readline()
print(cont) #运行结果
法外狂徒张三
王二狗
今天星期日

  根据以上运行结果,我们可以看到打印的是第一次读取的内容,content。相当于readline没起作用?这是为什么呢?

当我们看书的时候,眼睛会跟着字体一起移动,当内容读完后,眼睛此时的位置会在文章的最后一个字,同理,当文件读取后,光标的位置就移动到文件的最后了,那么再次读取的时候已经没有内容了。

解决方法1:重新打开文件,然后调用函数读取文件内容

#open函数调用
f= open('open函数.txt',encoding="utf8")
content = f.readline()
print(content) #运行结果
法外狂徒张三

解决方法2:移动文件光标位置到文件开头,然后重新读取文件内容。

#open函数调用
f= open('open函数.txt',encoding="utf8")
content = f.read()
print(content) #移动光标位置
f.seek(0)
#readline()
cont=f.readline()
print(cont) #运行结果:
法外狂徒张三
王二狗
今天星期日
法外狂徒张三

readlines():读取文件内容,读取所有的内容。以列表的形式打印出来。

f= open('open函数.txt',encoding="utf8")
content = f.readlines()
print(content) #运行结果
['法外狂徒张三\n', '王二狗\n', '今天星期日']

2、文件写入

write():文件写入

#open函数调用
f= open('write.txt',encoding="utf8")
#文件写入
f.write('少女的腿毛') #运行结果
io.UnsupportedOperation: not writable

从上面可以看到,文件写入报错了。找不到write.txt的这个文件。这是我们在文件写入的时候缺少一个参数mode='w'

#open函数调用
f= open('write.txt',encoding="utf8",mode='w')
#文件写入
f.write('少女的腿毛')

打开'write.txt'文件,出现了“少女的腿毛”字样。

重新写入“少女的腿毛2”,

#open函数调用
f= open('write.txt',encoding="utf8",mode='w')
#文件写入
f.write('少女的腿毛2\n')

打开文件后,少女的腿毛变成了少女的腿毛2,文件前面写入的内容被完全覆盖。出现这种现象的原因是文件写入模式,那么有哪些模式呢?

文件模式

常用的模式

1、r模式:只读模式

2、w模式:写入模式,这种模式会覆盖之前写入的内容

3、a模式:追加模式,相当于w模式的进阶,区别在于不会覆盖文件已经写入的内容

4、rb模式:用于读取二进制文件的只读,例如图片和视频等

5、wb模式:以二进制文件的写入

6、ab模式:以二进制形式追加写入内容。

详情可见https://www.runoob.com/python/python-func-open.html

write()

3、文件关闭

close()

关闭已经打开的文件。文件打开后需要关闭文件,不然会造成资源被大量占用,导致内存不够。

二、with open()

为解决用户在open()函数调用后忘记关闭文件而导致资源浪费的现象,python提出了with open的用法。语法如下:

#open函数调用
with open('write.txt',encoding="utf8",mode='w') as f:
#文件写入
f.write('tuimao')

其他的用法与open函数一致。不需要用户关闭文件,with open会自动释放缓存。

三、路径处理

1、系统路径,python能够自动找到的系统路径。

import sys
print(sys.path)

#运行结果

['E:\\python_workspaces\\python基础语法\\文件和路径处理',
'E:\\python_workspaces\\python基础语法',
'D:\\Python39\\python39.zip',
'D:\\Python39\\DLLs',
'D:\\Python39\\lib',
'D:\\Python39',
'D:\\Python39\\lib\\site-packages']

2、print(__file__)当前python文件的路径

print(__file__)

3、os.path.abspath:绝对路径

import os

print(os.path.abspath('write.txt'))

#运行结果
E:\python_workspaces\python基础语法\文件和路径处理\write.txt

4、os.path.dirname:获取路径目录。dirname()参数是一个路径。

import os
# print(__file__)
psths = os.path.abspath('write.txt')
print(os.path.dirname(psths)) #运行结果
E:\python_workspaces\python基础语法\文件和路径处理

5、os.path.join(a,b):路径拼接,b可以是文件名称,也可以是文件夹

import os
# print(__file__)
psths = os.path.abspath('write.txt')
#在文件和路径处理:E:\python_workspaces\python基础语法\文件和路径处理下创建一个文件write2.txt
write2 = os.path.join(os.path.dirname(psths),"write2.txt")
print(write2) #open函数调用
with open(write2,encoding="utf8",mode='w') as f:
#文件写入
f.write('tuimao2') #运行结果
创建了一个名称为“write2.txt”,内容为
tuimao2的文件

python基础之open函数和路径处理的更多相关文章

  1. python基础——高阶函数

    python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

  2. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  3. python学习第五讲,python基础语法之函数语法,与Import导入模块.

    目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...

  4. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  5. Python基础(协程函数、内置函数、递归、模块和包)-day05

    写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04  ...

  6. 『Python基础-13』函数 Function

    这篇笔记记录的知识点: 函数的基本概念 自定义函数 函数的几种参数 编程的三种方式: 1.OOP 面向对象编程,万物皆对象,以class为主,抽象化 2.POP 面向过程编程,万事皆过程,def定义过 ...

  7. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  8. python基础知识6——函数

    函数:自定义函数:函数的参数:不带参数,普通参数,默认参数,动态参数:返回值return:函数作用域:内置函数高阶函数:map,reduce,filter,sorted:lambda表达式:文件操作: ...

  9. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

随机推荐

  1. java学习第一天.day05

    jvm的内存 栈:类方法使用后自动销毁,销毁的好处是释放内存 java方法执行时,在栈区执行 堆: 线程共享的一块内存区域      所有的对象实例以及 数组 都要在堆上分配      每次使用new ...

  2. transform: scale() 实现鼠标悬浮在元素之上出现和消失

    前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...

  3. Excelize 发布 2.6.1 版本,支持工作簿加密

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  4. redis淘汰策略和过期策略

    淘汰策略 https://blog.csdn.net/qq_55961709/article/details/124568269 LRU算法和LFU算法的区别: LRU:最近最少使用,淘汰时间长没有使 ...

  5. Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)

    自2019年10月首次发布以来,Dapr(Distributed Application Runtime,分布式应用运行时)因其"更稳定"."更可靠".&quo ...

  6. 06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本

    06_Linux基础-NGINX和浏览器.网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本 一 ...

  7. 【面试题】JS第七种数据类型Symbol详解

    JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...

  8. 三门问题模拟对比试验——附VB6和Python3源程序及EXE文件

    三门问题模拟对比试验 [直接跳转到文件下载] 前言 "三门问题"是一个很有意思的概率论问题,涉及贝叶斯公式,是人工智能领域的一个经典问题. 为了直观地研究这个问题,也为了测试一下P ...

  9. 面试突击84:Spring 有几种事务隔离级别?

    Spring 中的事务隔离级别和数据库中的事务隔离级别稍有不同,以 MySQL 为例,MySQL 的 InnoDB 引擎中的事务隔离级别有 4 种,而 Spring 中却包含了 5 种事务隔离级别. ...

  10. PHP使用ZipArchive压缩、解压缩、加密压缩包等

    <?php use ZipArchive; class Zip { /** * @var array $files 需要压缩的文件或文件夹 */ public $files = []; /** ...