python3的文件与目录操作

来源:互联网 发布:淘宝店铺描述大全 编辑:程序博客网 时间:2024/06/01 18:33

1.open函数

2.常用的文件操作

3.用fileinput()操作文件

4.利用os模块进行目录操作

4.1获取当前路径

4.2获取目录内容

4.3创建和删除目录

4.4判断是否目录,文件

4.5遍历某目录下的所有目录和文件


1.open函数

当使用python的内置函数 open() 打开一个文件后,就会返回一个 文件对象,open()常用的格式如下:

f = open(filename,mode)
filename:表示文件名或者文件路径

mode:表示打开文件的模式,是可选参数,下面列表介绍mode有哪些可以选择

模式字符表示的操作r只读(默认)w可写,但会先清除原来文件内容a追加数据b二进制数据模式x新建一个文件,可写+打开文件直接更新t文本模式(默认)

实例:

def file_open(name = ‘python.txt’):     f = open(name)


2.常用文件操作

如有:

f = open(filename)
文件操作功能描述  f.read([n])将整个文件读入字符串中,或指定读取n个字符  f.readline([n])读取文件的一行到字符串中,或者指定读取一行的n个字符  f.readlines()将整个文件按行读入到列表中  f.write(s)向文件中写入字符串s  file.writelines(lines)向文件写入一个行数据列表  f.close()关闭打开的文件

如:

f = open('camt.c','rb')lines = f.readlines()for line in lines:    print(line.strip().decode('utf-8'))
readlines返回的是一个list列表,list列表中每一项表示文件中的  一行数据/文字


3.用 fileinput操作文件   ( 要先导入fileinput模块:import fileimput )

作用:fileinput可以同时对一个或多个文件中的内容进行迭代,遍历等操作。该模块的 input() 方法有点类似文件的 readlines()方法,区别是前者只是迭代一个对象,每次只生成一行,而后者是一次性读取所有行,当遇到大文件时,无疑前者更有效率。


fileinput的常用可选参数:

inplace:用于决定print输出到哪,若inplace = 0,print 则输出到屏幕(即标准输出),若inplace = 1,则把print 结果写到文件,默认情况下 inplace = 0

backup:指定备份文件的扩展名,如.bak,若备份文件存在,则覆盖


fileinput模块中常用的函数有:

函数功能  input()                                     返回能够用于迭代   一个或多个文件中所有行   的对象(可以给input传入一个列表)  filename()返回当前文件的名称  lineno()返回当前读取的行的数量  isfirstline()返回当前行是否文件的第一行  filelineno()返回当前读取行在文件中的行数
示例一:(打开单个文件)

import fileinputwith fileinput.input('1.txt') as lines:    for line in lines:        print(line.strip())        '''CC++C#javapython'''

示例二:(批量处理 txt文件)

import fileinput#1.txtC C++C##2.txtjava python #程序def process(line):    return (line.rstrip()+ ' language')for line in fileinput.input(['1.txt','2.txt'],inplace=1):    print(process(line))    '''运行结果:1.txt:C language C++ language C# language 2.txt:java languagepython language'''


示例三:(利用fileinput把文件内容替换,并把原有文件备份)

import fileinput'''样本文件:1.txt:CC++C#'''for line in fileinput.input('1.txt',inplace=1,backup='.bak'):    print(line.rstrip().replace('C++','Java'))    '''执行后的1.txt:CJavaC#并生成一个 1.txt.bak备份文件'''


4.利用os模块进行目录操作

Python提供的 os 模块提供了很多对文件或目录进行操作的函数,可以方便地对文件进行重命名,增加/删除目录,复制目录等操作。


4.1获取当前路径

os.getcwd():打印出程序所在的目录

import osprint(os.getcwd())#打印结果:C:\Users\abc\PycharmProjects\untitled3



4.2获取目录中的内容

os.listdir(path):列出目录路径path下有哪些文件,若不写path,则默认为当前目录

import osprint(os.listdir())



4.3创建和删除目录

os.mkdir(path):path为要创建的目录路径

如在当前目录下创建一个new目录:

import osos.mkdir('new')

同理,删除目录为:

os.rmdir(path)


4.4判断是否目录,文件

os.path.isdir(path) :path为要判断的路径,返回True or False

os.path.isfile(path):path为要判断的路径,返回True or False


4.5遍历某目录下的所有文件和目录

python中可以使用 os.walk(path) 函数,

os.walk(path)的输出:

os.walk()遍历目录后输出的格式为多个元组,每个元组第一项为遍历的目录名 ,第二项为遍历目录中的子目录列表,第三项为遍历目录中所有文件的列表。

示例一:

import osfor i in os.walk(r'./'): #对当前目录进行遍历    print(i)'''打印结果:('./', ['.idea', 'new'], ['1', '1.jsp', '1.txt', '1.txt.bak', '2.txt', 'camt.c'])('./.idea', [], ['.name', 'encodings.xml', 'misc.xml', 'modules.xml', 'untitled3.iml', 'workspace.xml'])('./new', ['新建文件夹'], ['新建文本文档.txt'])('./new\\新建文件夹', [], ['新建 RTF 文档.rtf'])'''

示例二:

由于os.walk() 的输出是分三块的(遍历的目录,遍历到的目录名,遍历到的文件名),因此接收 os.walk()元组时也可以用三个参数来接受,分别装三块的数据。

如下程序,我只打印出在当前路径下能遍历到的所有文件:

import osfor path,dir,file in os.walk(r'./'): #对当前目录进行遍历    #print(path)    #print(dir)    print(file)'''打印结果:['1', '1.jsp', '1.txt', '1.txt.bak', '2.txt', 'camt.c']['.name', 'encodings.xml', 'misc.xml', 'modules.xml', 'untitled3.iml', 'workspace.xml']['新建文本文档.txt']['新建 RTF 文档.rtf']'''


原创粉丝点击