Python可以用于处理文本文件和二进制文件,比如创建文件、读写文件等操作 。本文介绍Python处理目录以及文件的相关方法 。
下面先来介绍python目录处理相关方法 。
目录操作1. 获取当前代码路径test_folder.py
import osimport sysprint(__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.pyD:/ProgramWorkspace/PythonNotes/03-File-Handling/test_folder.pyD:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.pyD:\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-HandlingD:\ProgramWorkspace\PythonNotes\03-File-HandlingD:\ProgramWorkspace\PythonNotes\03-File-Handling
3. 获取当前文件名名称print(os.path.basename(sys.argv[0])) # 当前文件名名称print(os.path.basename(__file__))
Out:
【python读取文件名并修改 python获取文件名称的方法】test_folder.pytest_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:
FalseTrueTrue
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:
TrueTrueTrueTrue
os.access(newfilepath,os.F_OK) 也可以用于判断文件是否存在 。
4. 打开文件打开文本文件或者二进制文件可以使用 open() 方法:
f = open(filename, mode)
几种文件打开模式:
btrwaxr+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.HelloHello 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语句会进行上下文管理 。以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 如何在C语言中实现文件内容读取
- 利用工具实现多文件批量重命名:删除文件名称
- 如何在Python中创建空元组
- Python 如何在z3中声明枚举类型
- list Python中列表的基本概念
- Python如何高效过滤列表中重复的元素
- 如何使用Python进行Gabor滤波提取图片纹理特征
- Python中一维列表与二维列表的转换技巧
- Python如何让Matplotlib中X轴的标签居中显示
- Python数据类型和变量