(一)python中的文件操作函数
(1)文件的打开与关闭
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
语法格式为:open(文件名,访问模式)
示例如下:
f = open('test.txt', 'w')
常见访问模式的具体说明:

关闭文件的函数为close( ),示例如下:
# 新建一个文件,文件名为:test.txt
f = open('test.txt', 'w')
# 关闭这个文件
f.close()
(2) 文件的读和写/创建
使用write()可以完成向文件写入数据。
注意:如果文件不存在那么创建,如果存在那么就先清空,然后写入数据。示例如下:
f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。示例如下:令test.txt的文本内容是 hello world,i am here!
f = open('test.txt', 'r')
content = f.read(5)
print(content)
print("-"*30)
content = f.read()
print(content)
f.close()
上述程序的运行结果如下:

注意: 如果使用了“读操作”多次,那么后面读取的数据是从上次读完后的位置开始的。
此外,除了read()函数,还有一些其他函数也可以完成读取任务,具体如下:
(1)函数readlines()可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
(2)函数readline() 用于读取文件中的一行,包含最后的换行符“\n”。
(3)文件重命名
os模块中的rename()可以完成对文件的重命名操作,函数格式:rename(需要修改的文件名, 新的文件名),示例如下:
import os
os.rename("heihei.txt", "haha.txt")
(4)文件的删除
os模块中的remove()可以完成对文件的删除操作,函数格式:remove(待删除的文件名),示例如下:
import os
os.remove("heihei.txt")
(5)文件夹的创建与删除
创建
方法一:os.mkdir
使用python创建文件夹,通常使用os.mkdir方法,在使用这个方法时有几个小的细节需要注意,假设代码是这样编写的
import os
os.mkdir('/dir_1/dir_2/dir_3') # windows下是‘\’,linux下是‘/’
# linux与windows文件系统有什么区别?
# 1、linux文件系统区分大小写,而windows文件系统不区分大小写;
# 2、linux文件路径使用“/”,而windows文件路径使用“\”;
# 3、linux不会锁定对文件的独占访问,而windows会锁定对文件的独占访问。
(1)需要保证/dir_1/dir_2 是存在的,否则将引发FileNotFoundError,如果/dir_1/dir_2/dir_3 已经存在,又会引发FileExistsError。
(2)通常,使用os.path.exists方法判断关键的目录是否已经存在,来决定是否新建文件夹。
方法二:os.makedirs
(1)os.makedirs 可以视为os.mkdir的升级版本,它以递归的方式创建文件夹,如果dir_1不存在,就先创建dir_1,而后递归创建剩余的文件夹,这样就不存在FileNotFoundError;
(2)如果想要创建的目录已经存在,也没有关系,设置exist_ok = True, 就不会引发FileExistsError;
import os
os.makedirs('./1/2/3/4/5', exist_ok=True)
这两行代码可以执行多次,不会有任何错误或异常
注意:
os.mkdir(‘/dir_1/dir_2/dir_3’)
os.makedirs(‘./1/2/3/4/5’, exist_ok=True)
这两个语句中第一个‘/’前面有‘.’和没有‘.’的区别。
删除
如果要删除文件夹,则用命令:os.rmdir(“haha1”) ,即rmdir(删除文件夹的路径)
(二) Python format 格式化函数
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
“{} {}”.format(“hello”, “world”) # 不设置指定位置,按默认顺序
‘hello world’
“{0} {1}”.format(“hello”, “world”) # 设置指定位置
‘hello world’
“{1} {0} {1}”.format(“hello”, “world”) # 设置指定位置
‘world hello world’
也可设置参数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
运行结果:

也可以向 str.format() 传入对象:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的
运行结果:

数字格式化
print("{:.2f}".format(3.1415926))
运行结果:



此外我们可以使用大括号 {} 来转义大括号,如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print ("{} 对应的位置是 {{0}}".format("runoob"))
输出结果为:
runoob 对应的位置是 {0}
1451

被折叠的 条评论
为什么被折叠?



