美文网首页
Python文件操作

Python文件操作

作者: 逆风飞翔的鸟 | 来源:发表于2024-06-19 11:12 被阅读0次

本文介绍如何使用Python实现对文件、目录以及压缩包的操作。

一、文件操作

1、创建文件

with open("example.txt", "w") as file:
    # 在这里进行文件操作
    pass

2、删除文件

如果文件不存在,将会抛出文件不存在的异常。注意只能删文件,如果给了一个文件夹路径则会报错。

import os

try:
    os.remove('example.txt')
    print('文件删除成功')
except Exception as e:
    print('文件删除失败', e)

3、拷贝文件

import shutil
    
shutil.copy('example.txt','./new_folder')
shutil.copy('example.txt','./new_folder/new_file.txt')

两种实现方案:

  • 第二个参数写某个文件夹位置,则复制到该文件夹下;
  • 第二个参数写文件路径,复制到这个路径并且重命名。

4、移动文件

import shutil
    
shutil.copy('example.txt','./new_folder/')
shutil.move('example.txt','new_folder/new_file.txt')

两种方式使用:

  • 第二个参数是文件夹位置,则移动到文件夹下面
  • 第二个参数是文件路径,移动到这个路径并且重命名
    注意:如果是文件夹后面一定要加'/'

5、重命名文件

import os
    
os.rename('old_file.txt','new_file.txt')

6、查询文件

(1)字符串内置方法

.startswith(),.endswith()

(2)glob模块

import glob
    
print(glob.glob('*.py'))
    
print(glob.glob('**/*.txt',recursive=True))
模式 意义
匹配所有
? 匹配任何单个字符
[seq] 匹配seq中的任何字符
[!seq] 匹配任何不在seq中的字符

**表示任意层文件或文件夹 recursive=True会不断进入文件夹内

7、打印文件信息

import os
    
for file in os.scandir('./'):
    print(file.stat())

os.scandir()返回的文件都可以查询信息

  • st_size: 文件的体积大小(单位:bytes),除以10024就是KB
  • st_atime: 文件的最近访问时间
  • st_mtime:文件的最近修改时间
  • st_ctime:Windows下表示创建时间
  • st_birthtime:只在Mac、Linux下可用,表示创建时间

8、读文件

(1)read()方法

read()方法用于读取整个文件的内容,并将其存储为一个字符串。


file = open('example.txt', 'r')

content = file.read()

print(content)

(2)readlines()方法

readlines()方法用于读取整个文件的内容,并将其存储为一个列表,列表中的每个元素表示文件中的一行。

file = open('example.txt', 'r')

lines = file.readlines()

for line in lines:
    print(line)

(3) readline()方法

readline()方法用于读取文件的一行内容,并将其存储为一个字符串。

file = open('example.txt', 'r')

line = file.readline()

print(line)

4、写文件

文件读写模式:

打开模式 文件类型 方式 对已有文件影响 如果文件不存在 备注
r 文本 只读 抛异常 write等方法不可用
rb 二进制 只读 抛异常 write等方法不可用
r+ 文本 读写 追加 抛异常
rb+ 二进制 读写 追加 抛异常
w 文本 只写 覆盖并新建 新建 read等方法不可用
wb 二进制 只写 覆盖并新建 新建 read等方法不可用
w+ 文本 读写 覆盖并新建 新建 因为覆盖原来文件,read等方法获取到原文件的内容
wb+ 二进制 读写 覆盖并新建 新建 因为覆盖原来文件,read等方法获取到原文件的内容
a 文本 追加 追加到最后 新建 read等方法不可用
ab 二进制 追加 追加到最后 新建 read等方法不可用
a+ 文本 读写 追加到最后 新建
ab+ 二进制 读写 追加到最后 新建

(1)写入字符串数据

# 写入字符串数据
with open("example.txt", "w") as file:
    file.write("Hello, World!\n")
    file.write("This is a new line.")

(3)写入字节数据

  • 使用write()方法将字节数据写入文件。
  • 可以使用encode()方法将字符串转换为字节数据进行写入。
# 写入字节数据
with open("example.txt", "wb") as file:
    content = "Hello, World!\n"
    file.write(content.encode("utf-8"))

(4)writelines()

写入list内容,不会在元素之间自动添加换行符。

 
with open('example.txt','w',encoding='utf-8') as f:
    lines = [
    '春夜喜雨\n',
    '杜甫 [唐代]\n',
    '好雨知时节,当春乃发生。\n',
    '随风潜入夜,润物细无声。\n',
    '野径云俱黑,江船火独明。\n',
    '晓看红湿处,花重锦官城。\n']
    f.writelines(lines)

二、目录操作

1、遍历文件夹

(1)列出当前文件夹下所有的文件和文件夹

import os

os.listdir()
os.listdir('指定目录')
    
for file in os.scandir():
    print(file.name, file.is_dir())

判断文件还是文件夹:

import os

os.path.isdir('example')
os.path.isfile('example')

(2)遍历目录下所有的文件

import os
for dirpath, dirnames, files in os.walk('./'):
    print(f'发现文件夹:{dirpath}')
    print(files)

dirpath 是文件夹路径; dirnames是dirpath这个文件夹下的子文件夹列表; files是dirpath这个文件夹里的文件列表。

2、创建文件夹

(1)创建单层文件夹

import os

os.mkdir('新文件夹')

放文件夹已经存在时运行这句代码会报错,FileExisitsError

import os

if not os.path.exists('新文件夹'):
    os.mkdir('新文件夹')

只有当文件夹不存在的时候创建文件夹。

(2)创建多层文件夹

import os

os.makedirs('第一层文件夹/第二层文件夹/第三层文件夹')

当最里层文件夹已经存在时(第三层)运行这句代码会报错。

3、删除文件夹

import shutil
    
shutil.rmtree('文件夹')

4、复制文件夹

import shutil
    
shutil.copytree('文件夹1','文件夹2')

会将文件夹内的所有文件和文件夹都复制过去,新的文件夹不能已经存在。

5、移动文件夹

shutil.move(要移动的文件/文件夹,要移动的位置)

import shutil
    
shutil.move('folder_1','new_folder/')
shutil.move('folder_2','new_folder')

两种方式使用:

  • 第二个参数是文件夹位置,则移动到文件夹下面
  • 第二个参数是文件路径,移动到这个路径并且重命名
    注意:如果是文件夹后面一定要加'/'

6、重命名文件夹

import os
    
os.rename('old_folder','new_folder')

7、查找文件夹

字符串内置方法:.startswith(),.endswith()

8、路径拼接(解决跨平台问题)

Windows中采用反斜杠()作为作为文件夹之间的分隔符; Mac和Linux中采用正斜杠(/)作为文件夹之间的分割符。

为了解决跨平台的不一致,使用os模块下的系统函数进行拼接:

import os

os.path.join('MyApp', 'service')

Windows:MyApp\\service, Mac和LinuxMyApp/service

三、压缩文件

1、读取压缩文件

import zipfile
    
with zipfile.ZipFile('压缩包.zip','r') as zipobj:
    print(zipobj.namelist())

乱码情况处理:

for file_name in zipodj.namelist():
    print(file_name.encode('cp437').decode('gbk'))

2、获取压缩包文件信息

import zipfile
    
with zipfile.ZipFile('压缩包.zip','r') as zipobj:
    for file_name in zipobj.namelist():
        info = zipobj.getinfo(file_name)
        print(info.file_size,info.compress_size)

file_size是原始文件的大小,compress_size是压缩后大小,输出单位为字节。

3、解压压缩包

zipobj.extract(压缩包要解压的文件名,解压到的位置)

import zipfile

with zipfile.ZipFile('压缩包.zip','r') as zipobj:
    zipobj.extract('压缩包内压缩的文件名','解压到的指定目录')

中文名字解压后会出现乱码 乱码解决:

for file_name in zipobj.namelist():
    correct_path = file_name.encode('cp437').decode('gbk')

建议路径中文件和文件夹不要出现中文。 如果有中文可以现货区正确的编码文字,再重命名。

4、提取压缩包文件

默认当前路径:

import zipfile

with zipfile.Zipfile('压缩包.zip','r') as zipobj:
    zipobj.extractall()

带密码的压缩文件解压:

import zipfile

with zipfile.Zipfile('压缩包.zip','r') as zipobj:
    zipobj.extractall(path='指定解压目录',pwd=b'设置的密码')

5、创建压缩包

import zipfile
    
file_list = ['1.txt','2.txt','3.txt']
    
with zipfile.ZipFile('压缩成的压缩包名称.zip','w') as zipobj:
    for file in file_list:
        zipobj.write(file)

mode='a' 表示追加。

相关文章

  • 14.Python之文件操作

    Python之文件操作 文件操作通过Python中的内置函数open()对文件进行操作。文件操作需要如下几个参数:...

  • 第二节课:Python 操作文件 ——软件测试派

    学习目标:掌握 python 操作文件 python 提供内置函数 open()实现对文件的操作。 python ...

  • Python遍历目录并操作文件

    今天来使用python操作文件,包括根据模式查找文件、删除文件操作。 完整代码托管在python/find...

  • 解析Python中的文件操作

    1.简介 在Python中无需引入额外的模块来进行文件操作,Python拥有内置的文件操作函数(除了内置文件操作函...

  • Python 文件操作

    一. Python 读写 创建文件 Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 sh...

  • Python

    Python 创建文件 Python 对数据库进行操作--增删改查 Python 对csv进行操作 Python ...

  • python常用文件操作总结

    python 移动文件或文件夹操作。python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法...

  • python--文件的基本操作

    python编程中,文件是必不可少的。下面我们来学习python中文件的基本操作。 文件的基本操作: 在pytho...

  • Python常用语法二

    Python 字符串操作和文件操作以及其它Python能力补充 Python字符串操作 in和not in: 'x...

  • 文件操作

    Python基础教程 文件内容操作 python中的文件操作还是挺简单的,类似于php中的文件方法,精简好用。我们...

网友评论

      本文标题:Python文件操作

      本文链接:https://www.haomeiwen.com/subject/odpqcjtx.html