问题场景:
有时候需要将数十个甚至上百个txt或其他格式的文件内容合并到一起,如果一个个复制粘贴显然太费功夫,因此可以用代码实现文件内容的合并。
代码示例:
import os
import linecache
def combine_file():
# 读取指定路径下的所有文件并放入到列表中
root = input('please input the dir:')
file_names = os.listdir(root)
print(file_names)
file_ob_list = []
for file_name in file_names:
fileob = root + '/' + file_name
file_ob_list.append(fileob)
print(file_ob_list)
# 对每个文件,按行读取文件内容并放入同一个列表data中
data = []
for file_ob in file_ob_list:
line_num = 1
length_file = len(open(file_ob, encoding='utf-8').readlines())
print(length_file)
while line_num <= length_file:
line = linecache.getline(file_ob, line_num)
line = line.strip()
data.append(line)
line_num = line_num + 1
# 将data内容写入到生成的txt文件中,注意编码问题
f = open('./combine_data.txt', 'w+', encoding='utf-8')
for i, p in enumerate(data):
print(i, p)
f.write(p+'\n')
f.close()
combine_file()
代码解析:
其实主要是三步:指定路径、读取到列表、写入文件,这中间用到了python的os和linecache模块,前者可以显示指定目录下的文件名,后者可以读取指定行的文件内容。