Python_读写文件

一、文件路径(os模块)

1、不同操作系统,文件路径分隔符不同,windows:\,OS X/Linux:/,但os.path.sep变量将根据操作系统设置为正确的文件夹分割斜杠
2、绝对路径:从根文件夹开始;相对路径:对于程序的当前工作目录
(.)表示当前目录的缩写,(…)父文件夹
在这里插入图片描述
在这里插入图片描述
3、os.path模块方法

方法说明
os.path.join()连接两个或更多的路径名组件
os.path.abspath(path)返回参数的绝对路径的字符串(将相对路径转换为绝对路径的简便方法)
os.path.isabs(path)如果参数是一个绝对路径,返回True,相对路径则返回False
os.path.relpath(path, start)返回从start路径到path的相对路径的字符串,如果没有start,就使用当前工作目录为开始路径
os.path.dirname(path)返回一个字符串,包含path参数中最后一个斜杠之前的所有内容
os.path.basename(path)返回一个字符串,包含path参数中最后一个斜杠之后的所有内容
os.path.split(path)获得两个字符串(路径的目录名称和基本名称)元组,等价于(os.path.dirname(path), os.path.basename(path))。如果需要返回每个文件夹的字符串列表,可以使用字符串方法split(),FilePath.split(os.path.sep)
os.path.getsize(path)返回path参数中文件/文件夹的总字节数
检查路径有效性的方法
os.path.exists(path)path参数所指的文件或文件夹存在,则返回True,否则返回False
os.path.isfile(path)ath参数所指的文件或文件夹存在,且是一个文件,则返回True,否则返回False
os.path.isdir(path)ath参数所指的文件或文件夹存在,且是一个文件夹则返回True,否则返回False

注:os.path.join()

  • 如果各组件名首字母不包含’/’,则函数会自动加上
  • 第一个以”/”开头的参数开始拼接,之前的参数全部丢弃,当有多个时,从最后一个开始
  • 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
import os
os.path.join('usr', 'bin','spam')
>'usr\\bin\\spam'  #windows
>'usr/bin/spam'    #OS X/Linux

os.path.abspath('.')
>'C:\\Python38'
os.path.abspath('.\\scripts')  #windows目录名称不区分大小写
>'C:\\Python38\\Scripts'
os.path.isabs('.')
>False
os.path.isabs(os.path.abspath('.'))
>True
os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
>'..\\..\\Windows'

5、os模块方法
每个运行的计算机程序都有一个“当前工作目录”或cwd。所有没有从跟文件开始的文件名或路径,都假定在当前工作目录下。

方法说明
os.getcwd()获取当前工作路径的字符串
os.chdir()改变当前工作路径的字符串
os.makedirs()创建新文件夹
os.listdir(path)返回路径内各个文件名的字符串列表
import os
os.getcwd()
>'C:\\Python38'

os.chdir('C:\\Windows\\System32')  #如果更改的当前目录不存在,会显示错误
>os.getcwd()
>'C:\\Windows\\System32'

os.makedirs('C:\\delicious\\wallet\\awasa')
#将创建所有不存在的中间文件夹

os.listdir(r'E:\2Books')
>['JdReaderEBooks', 'Python编程:从入门到实践.epub']

二、读取纯文本文件

纯文本文件只包含基本文本字符,不包含字体、大小和颜色信息,例如.txt拓展名的文本文件,记忆.py拓展名的python脚本。但PDF、图像、电子表格和可执行性程序等属于“二进制文件”,每种不同类型的二进制文件,都必须用相应的方式处理。

1、调用open(file_path [,‘w’ /‘r’/ ‘a’/ ‘r+’/‘rb’/’wb’])函数,返回一个File对象

  • file_path可以是绝对路径,也可以是相对路径
  • File对象是Python中另一种类型的值,与列表和字典一样
  • 'w’写入模式;'r’读取模式;'a’附加模式;'r+'读取和写入文件模式,'rb’以读取二进制的模式打开文件,'wb’以写入二进制的模式打开文件,忽略模式实参,将默认只读模式打开文件,附加模式将write()写入的内容附加到原本内容,而不会删除原本内容
  • 如果要写入的文件不存在,open()将自动创建,但如果以’w’模式打开文件,且文件已经存在,python将在返回文件对象前清空该文件
helloFile = open('C:\\Users\\pi_digits.tx')

quizFile = open('capitalsuiz%s.txt' % (quizNum + 1), 'w')
#执行时,占位符%s都将被(quizNum + 1)取代

#关键字with在不再需要访问文件后将其关闭,如果调用close()容易导致错误或者文件未及时关闭
#同时open()返回的文件对象只在with代码块内可用,要在代码块外访问文件内容,可将文件的各行存储在一个列表中
with open('pi_digits.txt') as file_object:	

2、调用File对象的read()或write()方法

  • 读取文本时,所有文本都解读为字符串,要将数字作为数值使用,须使用int(),要转换为浮点数,使用float()
  • readlines():从该文件取得一个字符串的列表,列表中每个字符串就是文本中的每一行
  • write():不会在写入的文本末尾自动添加换行符,如果写入多行,需要在语句中包含换行符
print(helloFile.read())
>'Hello World!'

3、调用File对象的close()方法,关闭该文件

三、保存变量

1、shelve模块

  • 可以将Python程序中的变量保存到二进制的shelf文件中
  • open()函数将参数的文件名设置为保存变量的shelf文件的文件名,同时将返回shelf值
  • shelf值可以修改,且和字典类似,有keys()和values()方法,返回shelf中键和值的类似列表的值,但不是真正的列表,应该传递给list()函数取得列表的形式
  • shelf值不必用读取模式或写入模式打开,在文件打开后,能同时执行读取和写入操作
import shelve
shelfFile = shelve.open('mydata')
cats = ['Zophie', 'Pooka', 'Simon']
shelfFile['carts'] = cats
print(list(shelfFile.keys()))
>['cats']
print(list(shelfFile.values()))
>[['Zophie', 'Pooka', 'Simon']]
shelfFile.close()

2、pprint.pformat()函数

  • 返回参数里列表或字典内容的文本字符串,可以写入.py文件,该文件和其他模块一样,同样可以导入其他Python脚本中
  • 由于Python脚本本身也是以.py作为文件拓展名,所以Python程序可以生成其他Python程序,然后将这些文件导入到脚本
  • 创建.py文件的好处在于,文本文件容易读取和修改,但只有基本数据类型,如整型、浮点型、字符串、列表和字典等,可以作为简单文本写入一个文件,File对象就不能够编码为文本
import pprint
cats = [{'name': 'Zophie'}, {'name':'Pooka'}]
print(pprint.pformat(cats))
>[{'name': 'Zophie'}, {'name':'Pooka'}]
fileObj = open('myCats.py', 'w')
fileObj.write('cats = ' + pprint.pformat(cats) + '\n')
fileObj.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值