目录
2.打开文件夹下所有txt文件,并且打开子文件夹,找出所有txt文件。打印出文件名,和文件内容
C:\\Users\\Desktop\\a.txt的内容
bash
First line.
Second line.
Third line.
1.打开指定文件,显示文件内容
在 Python 中,使用 with open 语句打开文件时,文件会在代码块执行完毕后自动关闭,无需显式调用 close() 方法。这种模式称为上下文管理器(context manager),它确保资源(如文件)在使用后被正确释放。
语法
python
with open('filename.txt', 'r') as file:
# 文件操作代码
content = file.read()
# 文件在此处自动关闭
替代方案:若需手动控制关闭,可使用 try-finally:
python
file = open('filename.txt', 'r')
try:
content = file.read()
finally:
file.close() # 手动关闭
python
fname="C:\\Users\\Desktop\\a.txt"
"""1. 使用open函数读取文件
在Python中,读取文件最基本的方式是使用内置的open函数。第1个参数是文件地址,第2个参数是读取模式,第3个参数是编码。这个函数返回一个文件对象,你可以用它来读取文件内容 .with语句确保文件在读取完毕后自动关闭。file.read():读取文件全部内容
"""
print("=======open")
with open(fname,'r',encoding='utf-8') as file:
content=file.read()
print(content)
"""
对于大文件,一次性读取全部内容可能会消耗大量内存。按行读取是一个更好的选择。strip()去除每行末尾的换行符
"""
print("=======open\n line")
with open(fname,'r',encoding='utf-8') as file:
for line in file:
print(line.strip())
"""
写入文件同样使用open函数,但模式要改为'w'(写入)或'a'(追加)
"""
print("=======w,a")
# 写入文件
with open(fname, 'w', encoding='utf-8') as file:
file.write('Hello, Python!\n')
file.write('Welcome to file operations.')
# 追加内容到文件
with open(fname, 'a', encoding='utf-8') as file:
file.write('\nGoodbye, Python!')
"""
你可以使用writelines方法一次性写入多行内容。
"""
print("=======writelines")
lines_to_write = ['First line.\n', 'Second line.\n', 'Third line.\n']
with open(fname, 'w', encoding='utf-8') as file:
file.writelines(lines_to_write)
"""
readlines方法会读取文件所有行,并返回一个包含每行内容的列表
"""
print("=======readlines")
with open(fname, 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
运行结果
bash
=======open
First line.
Second line.
Third line.
=======open
line
First line.
Second line.
Third line.
=======w,a
=======writelines
=======readlines
First line.
Second line.
Third line.
2.打开文件夹下所有txt文件,并且打开子文件夹,找出所有txt文件。打印出文件名,和文件内容
在Python中,使用os.listdir函数可以列出目录中的文件和子目录。如果你想要递归地打开一个目录及其所有子目录,可以使用os.walk函数,它提供了一个更高级的方式来遍历目录树。
下面os.listdir使用的语法
python
import os
# 打开文件
COOKED_FOLDER = 'C:\\Users\\Desktop\\' #文件夹的地址
dirs = os.listdir( COOKED_FOLDER )
# 输出所有文件和文件夹
for file in dirs:
#print(file) #输出所有文件夹名字
filepath = COOKED_FOLDER + file #文件所在地址
lname=file.split(".")[-1] if "." in file else "" #如果没有if else,文件名没有后缀的时候,lname就是文件名
#print(lname)
if lname=='txt':
print(filepath)
with open(filepath,'r') as f: #读取文件
for line in f : # #按行遍历文件内容
print(line) #输出每行信息
打开了桌面文件夹,发现下面只有一个txt文件。输出结果
bash
C:\Users\Desktop\a.txt
First line.
Second line.
Third line.
下面是使用os.walk的语法
python
import os
# 打开文件
fname = 'C:\\Users\\99757\\Desktop\\exa' #文件夹的地址
#定义函数
def readd(top_dir):
for root,dirs,files in os.walk(top_dir):
for file in files:
if (file.endswith('.txt')):
print(f'文件:{root},{file}')
readd(fname)#调用函数
在这个示例中,os.walk(top_dir)会生成一个三元组(root, dirs, files),其中:
root是当前正在遍历的目录路径。
dirs是一个包含root下所有子目录名的列表。
files是一个包含root下所有非目录文件名的列表。
通过这种方式,你可以递归地访问和打印出所有子目录和文件。如果你想对每个子目录进行进一步的操作,你可以在循环遍历dirs时添加你的代码。