python3的文件与目录操作

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 fileinput

with fileinput.input('1.txt') as lines:
    for line in lines:
        print(line.strip())
        
'''
C
C++
C#
java
python
'''

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

import fileinput

#1.txt
C 
C++
C#

#2.txt
java 
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 language
python language
'''

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

import fileinput

'''
样本文件:1.txt:
C
C++
C#
'''
for line in fileinput.input('1.txt',inplace=1,backup='.bak'):
    print(line.rstrip().replace('C++','Java'))
    
'''
执行后的1.txt:
C
Java
C#

并生成一个 1.txt.bak备份文件
'''

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

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

4.1获取当前路径

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

import os

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

4.2获取目录中的内容

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

import os
print(os.listdir())

4.3创建和删除目录

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

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

import os
os.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 os
for 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 os
for 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']
'''

    原文作者:ZJE_ANDY
    原文地址: https://blog.csdn.net/u014453898/article/details/72897907
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞