Python文件及目录处理的方法

目录
  • 一、目录操作
    • 1. 获取当前代码路径
    • 2. 获取当前文件__file__的所在目录
    • 3. 获取当前文件名名称
    • 4. 拼接路径
    • 5. 创建目录
  • 二、文件操作
    • 1. 创建文本文件
    • 2. 判断文件是否存在
    • 3. 判断文件属性
    • 4. 打开文件
    • 5. 写文件
    • 6. 读文件
    • 7. with语句

下面先来介绍python目录处理相关方法。

一、目录操作

1. 获取当前代码路径

test_folder.py

import os
import sys

print(__file__)
print(sys.argv[0])
print(os.path.realpath(__file__))
print(os.path.abspath(sys.argv[0]))

Out:

D:/ProgramWorkspace/PythonNotes/03-File-Handling/test_folder.py
D:/ProgramWorkspace/PythonNotes/03-File-Handling/test_folder.py
D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py
D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py

2. 获取当前文件__file__的所在目录

print(os.getcwd())
print(os.path.dirname(os.path.realpath(__file__)))
print(os.path.split(os.path.realpath(__file__))[0])
path = os.path.dirname(os.path.realpath(__file__))

Out:

D:\ProgramWorkspace\PythonNotes\03-File-Handling
D:\ProgramWorkspace\PythonNotes\03-File-Handling
D:\ProgramWorkspace\PythonNotes\03-File-Handling

3. 获取当前文件名名称

print(os.path.basename(sys.argv[0])) # 当前文件名名称
print(os.path.basename(__file__))

Out:

test_folder.py
test_folder.py

4. 拼接路径

path = os.path.dirname(os.path.realpath(__file__))
filename = os.path.basename(__file__)
abspath = os.path.join(path, filename)
print(abspath)

Out:

D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py

5. 创建目录

判断目录是否存在:

os.path.exists(path)

创建目录:

if not os.path.exists(path):
    print(f"创建文件夹: {path}")
    os.makedirs(path)

二、文件操作

1. 创建文本文件

text = "Hello World!"
newfilepath = os.path.join(path, "newfile.txt")
file = open(newfilepath, 'w')
file.write(text)  # 写入内容信息
file.close()

2. 判断文件是否存在

print(os.path.isfile(path))
print(os.path.isfile(newfilepath))
print(os.path.exists(newfilepath))

Out:

False
True
True

os.path.isfile 用于判断是否为文件且是否存在,os.path.exists 也可以用于判断文件是否存在,但还是建议使用os.path.isfile 判断文件,os.path.exists 判断目录是否存在。比如,某个文件为newfile,使用这两个方法都会返回True,无法判断到底是文件还是目录。

3. 判断文件属性

print(os.access(newfilepath,os.F_OK)) # 文件是否存在
print(os.access(newfilepath,os.R_OK)) # 文件是否可读
print(os.access(newfilepath,os.W_OK)) # 文件是否可以写入
print(os.access(newfilepath,os.X_OK)) # 文件是否有执行权限

Out:

True
True
True
True

os.access(newfilepath,os.F_OK) 也可以用于判断文件是否存在。

4. 打开文件

打开文本文件或者二进制文件可以使用 open() 方法:

f = open(filename, mode)

几种文件打开模式:

  • b:二进制模式
  • t:文本模式(默认)
  • r: 打开存在的文件,读操作(默认)。
  • w: 打开文件,写操作,先前文件中的内容会被删除。如果文件不存在会自动创建。
  • a: 打开文件,追加操作,不会删除先前文件中的内容。如果文件不存在会自动创建。
  • x :创建新文件,写操作,使用此模式打开存在的文件会抛出异常。
  • r+ : 读、写操作,不会删除先前文件中的内容,但是会覆盖内容。
  • w+ :  写、读操作,会删除先前文件中的内容。
  • a+ : 追加、读操作,不会删除和覆盖先前文件中的内容。
  • x+ :创建新文件,读写操作。

open()方法的默认模式为 rt 模式,也就是读文本文件。

另外需要注意filename的写法,比如文件路径是:D:\test.txt ,其中\t 可能会被转义,需要自前面加一个 r :

f = open(r"D:\test.txt", "w")

5. 写文件

读写文件都需要先打开文件,返回一个文件对象,然后对文件对象进行读写操作。写文件需要设置写权限,比如 w、w+、a 模式。

写文件主要包括两种方法:

  • file.write(str):写入字符串
  • file.writelines(list):写入字符串列表,用于同时插入多个字符串。

举个栗子:

file = open("newfile.txt", 'w')
text1 = "Hello World!\n你好,世界!\r"
file.write(text1)  # 写入内容信息

text2 = ["To the time to life, \n", "rather than to life in time.\r"]
file.writelines(text2)

file.close()

w 模式会删除先前文件中的内容,如果不想删除,需要直接追加到后面,可以使用a 和 a+ 模式:

file = open("newfile.txt", 'a')

6. 读文件

常见的读取文件方法有以下几种:

  • in操作符
  • read() :读取所有数据,返回一个字符串。
  • readline() :读取第一行
  • readlines() :读取所有行,每行保存为列表的一个元素。
# 打开并读取文件
file = open("newfile.txt", 'r')

for line in file:
 print(line)
print()

file.seek(0, 0)
print(file.read(5))  #
print()

file.seek(0, 0)
print(file.readline(12))
print()

file.seek(0, 0)
print(file.readlines())
print()

file.close()

执行结果:

Hello World!

你好,世界!

To the time to life, 

rather than to life in time.

Hello

Hello World!

['Hello World!\n', '你好,世界!\n', 'To the time to life, \n', 'rather than to life in time.\n']

读取file对象的所有内容后,文本的光标会移动到最后,再次读取file需要将光标移到前面,使用 file.seek(0, 0) 方法可以将光标移到前面。还有一种解决方案是将读取的内容存一个在局部变量中。

7. with语句

with语句可用于异常处理,可以确保资源的适当获取及自动释放。使用with语句后就不需要调用file.close() 语句了,它会自动释放。

text1 = "Hello World!\n你好,世界!\r"
text2 = ["To the time to life, \n", "rather than to life in time.\r"]
# 写
with open("newfile.txt", "w") as file:
    file.write(text1)
    file.writelines(text2)

# 读
with open("newfile.txt", "r+") as file:
 print(file.read())

with语句对处理大文件非常有用,比如10G大小的文件, with语句会进行上下文管理。

到此这篇关于Python文件及目录处理的方法的文章就介绍到这了,更多相关Python文件及目录处理方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python文件目录操作之os模块

    一.os函数目录 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作目录 3 os.chflags(path, flags) 设置路径的标记为数字标记. 4 os.chmod(path, mode) 更改权限 5 os.chown(path, uid, gid) 更改文件所有者 6 os.chroot(path) 改变当前进程的根目录 7 os.close(fd) 关闭文件描述符 fd 8 os.closerange(fd_low, fd

  • Python 如何获取目录下的文件列表,并自然排序

    在实际的算法与程序开发中,经常需要面对的场景就是对同一目录内的文件进行批量操作. 并且很多时候目录中的文件明明是有规律的,同时希望程序在进行处理时也是按照一定的顺序进行. 方法 1 >>> import os >>> fileList = os.listdir('TestDir') >>> fileList ['test1.txt', 'test10.txt', 'test11.txt', 'test2.txt', 'test23.txt', 'tes

  • 关于Python OS模块常用文件/目录函数详解

    模块:包含定义函数和变量的python文件,可以被别的程序引入. os模块是操作系统接口模块,提供了一些方便使用操作系统相关功能函数,这里介绍下os模块中对于文件/目录常用函数和使用方法. 1. 返回当前文件目录:getcwd() 2.改变工作目录:chdir(path) 将当前工作目录更改为path的目录 3. 更改当前进程根目录:chroot(path) 4.列举出目录中的文件名:listdir(path) 返回列表,包含了path所有文件和目录名称,排序无顺序 5.创建目录:mkdir(p

  • Python标准库pathlib操作目录和文件

    目录 pathlib 基本组件 常用属性和基本方法 总结 学习 Python 时,尤其是在进行文件操作和数据处理时,经常会处理路径问题.最常用和常见的是 os.path 模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而且代码很难跨平台复用.pathlib 就是一个非常棒的Python标准库,超级好用. pathlib模块提供了一种在 POSIX 系统(如 Linux 和 Windows)下运行良好的高级抽象,它抽象了资源路径和资源命名结构,把文件系统接口从os模块中隔离出

  • Python文件及目录处理的方法

    目录 一.目录操作 1. 获取当前代码路径 2. 获取当前文件__file__的所在目录 3. 获取当前文件名名称 4. 拼接路径 5. 创建目录 二.文件操作 1. 创建文本文件 2. 判断文件是否存在 3. 判断文件属性 4. 打开文件 5. 写文件 6. 读文件 7. with语句 下面先来介绍python目录处理相关方法. 一.目录操作 1. 获取当前代码路径 test_folder.py import os import sys print(__file__) print(sys.ar

  • Python文件及目录操作实例详解

    本文实例讲述了Python文件及目录操作的方法.分享给大家供大家参考.具体分析如下: 在python中对文件及目录的操作一般涉及多os模块,os.path模块.具体函数以及使用方法在程序中说明. #!/usr/bin/env python #-*- coding=UTF8 -*- import os import os.path as op def change_dir(): ''' 该函数显示及改变前目录 using chdir() to change current dir getcwd()

  • python文件与目录操作实例详解

    本文实例分析了python文件与目录操作的方法.分享给大家供大家参考,具体如下: 关于python文件操作的详细说明,大家可以参考前一篇<python文件操作相关知识点总结整理> 官方API:os-Miscellaneous operating system interfaces 下面是demo示例: import re import os import time #图片文件路径 image_path = 'E:\\test\\20130627_140132Hongten.jpg' #文件夹路

  • Python 使用PyQt5 完成选择文件或目录的对话框方法

    如下所示: import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QTextEdit,QAction,QFileDialog from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): self.tex

  • python各层级目录下import方法代码实例

    这篇文章主要介绍了python各层级目录下import方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 以前经常使用python2.现在很多东西都切换到了python3,发现很多东西还是存在一些差异化的.跨目录import是常用的一种方法,并且有不同的表现形式,新手很容易搞混.有必要这里做个总结,给大家科普一下: 1 同级目录下的调用: 同级目录下的调用比较简单,一般使用场景是不同类的相互调用.不用考虑路径问题,常用的格式是:from

  • linux普通用户su root切换提示没有文件或目录的解决方法

    1. 首先进入单用户模式: 1). ubuntu : 上述情况可以在grub界面选择第二项修复,但没有grub可以参考: 1.重启ubuntu,随即长按shirft进入grub菜单: 2.选择recovery mode,按"e"键进入编辑页面:如下: 非恢复模式为:   3.将ro recovery nomodeset替换为"rw single init=/bin/bash" (上述的界面中将改为rw single init=/bin/bash) 4.按ctrl+x

  • php获取目录中所有文件名及判断文件与目录的简单方法

    一,php获取目录中的所有文件名 1.打开要操作目录的目录句柄 代码示例: //打开当前目录下的目录pic下的子目录common. $handler = opendir('pic/common'); 2.循环读取目录下的所有文件 代码示例: /*其中$filename = readdir($handler) 每次循环时将读取的文件名赋值给$filename,$filename !== false. 一定要用!==,因为如果某个文件名如果叫'0′,或某些被系统认为是代表false,用!=就会停止循

  • python 文件查找及内容匹配方法

    需求:程序开发中有大量的接口,但在实际的使用中有一部分是没有使用的,在开发的程序中匹配这些接口名,找到哪些接口从没有使用过.将这些没有使用过的接口名保存下来. 代码结构: 结构解析: 1.find.py 是文件查找及匹配程序 2.input_files.txt是待匹配内容 文件格式如下: 3.result.txt 用于存放查找结果 格式同上 4.text.txt 用于测试的文档(可忽略) 实际代码: find.py #!/usr/bin/python # -*- coding: UTF-8 -*

  • python 文件与目录操作

    1)os.path 1.1 os.path.isabs(path) 是否是绝对路径 1.2 os.path.isfile(path) 1.3 os.path.isdir(path) 1.4 os.path.islink(path) 是否是链接:但如果系统不支持链接,返回False 1.5 os.path.ismount(path) 是否为驱动器:但是很不幸的是在python 3.0中这是个不能运行的函数. 原函数如下: # Is a path a mount point? Either a ro

  • python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开文件 想要操作文件,先要创建或者打开指定文件并创建文件对象,可以通过内置函数open()来实现. file = open(file_name[,mode[,buffering]]) ''' file_name : 要创建或者打开的文件名 mode : 用于指定文件打开的方式 ''' mode参数的参

随机推荐