Python遍历文件夹、读写txt文件:
os.listdir()/os.path.join/list.append()/open()
Python可以处理的文件有txt、Excel、word、csv等,日常程序编码中,总需要读取相关的文档获取其中的数据,进而进行数据处理、数据分析等工作。
1.Python遍历文件夹下的所有文件
在这里需要引入Python的内置模块os来操作文件夹或文件,os模块提供了非常丰富的方法来处理文件和目录。
当文件夹下只有文件时(即文件夹下只有txt文件):使用os模块的listdir()方法
import os # 导入os模块
def get_filepaths(filebase):
"""遍历filebase路径下的所有文件名,返回一个包含所有文件的绝对路径列表"""
filenames = os.listdir(filebase)
paths = []
for filename in filenames:
paths.append(os.path.join(filebase,filename))
return paths
if __name__ == '__main__':
filebase = r'D\Python\txtfiles' # 这儿使用r''格式化路径字符串,避免因为\t报错
output_paths = get_filepaths(filebase)
print(output_paths)
下面是上面的代码中用到的方法的讲解:
'''用到的函数或方法:
(1)os.listdir(path):返回path指定的文件夹包含的文件或文件夹的名字的列表。
(2)os.path.join(path1,path2[,path3,...]):把目录和文件名合成一个路径
(3)list.append(obj):在列表末尾添加新的对象。注意与list.extend()区分
(4)list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
'''
代码演示——比如我的文件路径如下:
执行代码返回的结果如下:
2.Python读写txt文件的内容
这会使用到open()函数,python常用的读取文件的方法有三种:read()、readline()、readlines()
open()函数:open()是Python的一个内置函数,用于打开一个文件,创建一个file对象,相关的方法才可以对它进行读写。
语法:open(name[,mode[,buffering]]):
- name: 一个包含了你要访问的文件名称的字符串值。可以是相对路径,也可以是绝对路径。
- mode: mode 决定了打开文件的模式:只读(r),写入(w),追加(a)等。这个参数是非强制的,默认文件访问模式为只读(r)。
- buffering:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
常用的几种模式(mode):
- r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
- w :打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
- a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
file对象方法:
- f.read([size]):一次性读取txt文件中的全部内容,以字符串的形式返回文本内容。size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
- f.readline():只读取txt文件中的第一行内容,以字符串的形式返回结果。
- f.readlines([size]):一次性读取整个文件,以列表的形式返回结果,其中一行为列表的一个元素。
- f.write():如果要写入字符串以外的数据,先将他转换为字符串。
- f.close():关闭文件
open函数的模式:截图来自菜鸟教程
读取txt演示代码:
path = r'D:\Python\open_test.txt' # path可以是绝对路径,也可以是相关路径(必须和代码所在同一个路径下)
list_data = []
with open(path,'r',encoding='utf-8') as file:
lines = file.readlines()
foor line in lines:
list_data.append(line)
file.close()
print(list_data)
txt文档内容如下:
输出结果如下:
写入txt文件类似:
# 将list_data = ['天下难事\n', '必作于易\n', '天下大事\n', '必作于细']写入output.txt文件
list_data = ['天下难事\n', '必作于易\n', '天下大事\n', '必作于细']
with open('test_output.txt','a',encoding='utf-8') as file:
for Str in list_data:
file.write(Str)
file.close()